关闭

Windows编程2-打印参数

333人阅读 评论(0) 收藏 举报

#include <windows.h>

#include "SYSTEM.h"

/*****************************************************

 Windows SDK编程之一  窗口示例程序

******************************************************/

 

/*Win32应用程序框架主要由"初始化窗口类","窗口注册类","窗口的创建"以"窗口消息函数"等组成*/

 

LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);

 

/*

 WinMain函数是所有windows应用程序的入口,类似于C语言中的Main函数,其功能是完成一系列的定义和初始化工作,并产生消息循环。消息循环是整个程序运行的核心。WinMain函数实现以下功能。

 1. 注册窗口类,建立窗口及执行其它必要的初始化工作;

 2. 进入消息循环,根据从应用程序消息队列接受的消息,调用相应的处理过程

 3. 当消息循环检索到WM_QUIT消息时终止程序运行。

 

*/

 

/*

WinMain函数有三个基本的组成部份:函数说明、初始化和消息循环。

*/

int APIENTRY WinMain(  //WinMain函数说明

 

HINSTANCE hInstance, //程序当前实例句柄      

HINSTANCE hPrevInstance, //应用程序其它实例句柄

LPSTR lpCmdLine, //指向程序命令行参数的指针

int iCmdShow) //应用程序开始执行时窗口显示方式的整数值标识

 

{

/*

由于Window操作系统是多任务的操作系统,能进行多任务的管理,因此,windows应用程序可能被并行的多次执行,因而可能出现同一个程序的多个窗口同时存在的情况,Windows系统将应用程序每一次执行称为该应用程序的一个实例(Instance),并用一个实例句柄唯一的标识它。

 

*/

 

 

 static TCHAR szAppName[] = TEXT ("SysMets1") ;

 

    HWND   hwnd ; //句柄

 

    MSG    msg ;

 

    WNDCLASS wndclass;

 

   wndclass.style        = CS_HREDRAW | CS_VREDRAW ;

 

   wndclass.lpfnWndProc  = WndProc ;

 

    wndclass.cbClsExtra   = 0 ;

 

    wndclass.cbWndExtra   = 0 ;

 

    wndclass.hInstance    = hInstance ;

 

    wndclass.hIcon        = LoadIcon (NULL, IDI_APPLICATION) ;

 

   wndclass.hCursor      = LoadCursor (NULL, IDC_ARROW) ;

 

   wndclass.hbrBackground= (HBRUSH) GetStockObject (WHITE_BRUSH) ;

 

   wndclass.lpszMenuName  = NULL ;

 

   wndclass.lpszClassName= szAppName ;

 

if (!RegisterClass(&wndclass))

   {

         MessageBox (  NULL, TEXT ("This program requires Windows NT!"),

 

         szAppName, MB_ICONERROR) ;

 

            return 0 ;

 

    }

 

    hwnd = CreateWindow( szAppName,      // window class name

 

                   TEXT ("The Hello Program"),   // window caption

 

                   WS_OVERLAPPEDWINDOW,  // window style

 

                   CW_USEDEFAULT,// initial x position

 

                   CW_USEDEFAULT,// initial y position

 

                   CW_USEDEFAULT,// initial x size

 

                   CW_USEDEFAULT,// initial y size

 

                   NULL,                 // parent window handle

 

               NULL,            // window menu handle

 

               hInstance,   // program instance handle

 

               NULL) ;      // creation parameters

 

 

 

    ShowWindow(hwnd, iCmdShow) ;

 

    UpdateWindow (hwnd) ;

 

 

 

    while (GetMessage(&msg, NULL, 0, 0))

 

    {

 

           TranslateMessage (&msg) ; //翻译消息

 

          DispatchMessage (&msg) ; //分发消息

 

    }

 

    return msg.wParam ;

 

}

 

 

LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)

{

  static int    cxChar, cxCaps, cyChar ;

 

    HDC                   hdc ;

 

    int                   i ;

 

    PAINTSTRUCT ps ;     

 

    TCHAR                szBuffer [10] ;

 

    TEXTMETRIC  tm ;

 

 

    switch (message)

 

    {

 

   case   WM_CREATE:

 

         hdc = GetDC (hwnd) ;

 

 

          GetTextMetrics (hdc, &tm) ;

 

          cxChar = tm.tmAveCharWidth ;

 

          cxCaps = (tm.tmPitchAndFamily & 1 ? 3 : 2) * cxChar / 2 ;

 

          cyChar = tm.tmHeight + tm.tmExternalLeading ;

 

 

          ReleaseDC (hwnd, hdc) ;

 

          return 0 ;

 

 

    case   WM_PAINT :

 

          hdc = BeginPaint (hwnd, &ps) ;

 

 

          for (i = 0 ; i < NUMLINES ; i++)

 

                  {

 

            TextOut       (hdc, 0, cyChar * i,                    

 

                         sysmetrics[i].szLabel,

 

                         lstrlen (sysmetrics[i].szLabel)) ;

 

 

            TextOut       (hdc, 22 * cxCaps, cyChar * i,    

 

                         sysmetrics[i].szDesc,

 

                         lstrlen (sysmetrics[i].szDesc)) ;

 

 

                   SetTextAlign (hdc, TA_RIGHT | TA_TOP) ;

 

        TextOut (hdc, 22 * cxCaps + 40 * cxChar, cyChar * i,   szBuffer,

 

    wsprintf (szBuffer, TEXT ("%5d"),

 

GetSystemMetrics (sysmetrics[i].Index))) ;

 

              SetTextAlign (hdc, TA_LEFT | TA_TOP) ;

 

         }

 

            EndPaint (hwnd, &ps) ;

 

            return 0 ;

 

    case   WM_DESTROY :

 

            PostQuitMessage (0) ;

 

    return 0 ;

 

    }

 

return ::DefWindowProc(hwnd,message,wParam,lParam);

}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

/*---------------------------------------------------------

 

SYSMETS.H -- System metrics display structure

 

-----------------------------------------------------------*/

 

#define NUMLINES ((int) (sizeof sysmetrics / sizeof sysmetrics [0]))

 

struct

 

{

 

    int    Index ;

 

    TCHAR *       szLabel ;

 

   TCHAR *       szDesc ;

 

}

 

sysmetrics [] =

 

{

 

  SM_CXSCREEN,    TEXT ("SM_CXSCREEN"),            

 

                  TEXT ("Screen width in pixels"),

 

    SM_CYSCREEN, TEXT ("SM_CYSCREEN"),            

 

                         TEXT ("Screen height in pixels"),

 

    SM_CXVSCROLL, TEXT ("SM_CXVSCROLL"),           

 

                          TEXT ("Vertical scroll width"),

 

    SM_CYHSCROLL,  TEXT ("SM_CYHSCROLL"),           

 

                          TEXT ("Horizontal scroll height"),

 

    SM_CYCAPTION, TEXT ("SM_CYCAPTION"),           

 

                             TEXT ("Caption bar height"),

 

    SM_CXBORDER, TEXT ("SM_CXBORDER"),            

 

                          TEXT ("Window border width"),

 

    SM_CYBORDER,  TEXT ("SM_CYBORDER"),            

 

                          TEXT ("Window border height"),

 

    SM_CXFIXEDFRAME,TEXT ("SM_CXFIXEDFRAME"),        

 

                          TEXT ("Dialog window frame width"),

 

    SM_CYFIXEDFRAME,TEXT ("SM_CYFIXEDFRAME"),        

 

                          TEXT ("Dialog window frame height"),

 

    SM_CYVTHUMB,  TEXT ("SM_CYVTHUMB"),            

 

                         TEXT ("Vertical scroll thumb height"),

 

    SM_CXHTHUMB,    TEXT ("SM_CXHTHUMB"),            

 

                             TEXT ("Horizontal scroll thumb width"),

 

    SM_CXICON,       TEXT ("SM_CXICON"),             

 

                          TEXT ("Icon width"),

 

    SM_CYICON,       TEXT ("SM_CYICON"),              

 

                        TEXT ("Icon height"),

 

    SM_CXCURSOR,  TEXT ("SM_CXCURSOR"),            

 

                          TEXT ("Cursor width"),

 

    SM_CYCURSOR,    TEXT ("SM_CYCURSOR"),           

 

                          TEXT ("Cursor height"),

 

    SM_CYMENU,       TEXT ("SM_CYMENU"),              

 

                          TEXT ("Menu bar height"),

 

    SM_CXFULLSCREEN,TEXT ("SM_CXFULLSCREEN"),        

 

                          TEXT ("Full screen client area width"),

 

    SM_CYFULLSCREEN,TEXT ("SM_CYFULLSCREEN"),        

 

                          TEXT ("Full screen client area height"),

 

    SM_CYKANJIWINDOW,TEXT ("SM_CYKANJIWINDOW"),       

 

                           TEXT ("Kanji window height"),

 

    SM_MOUSEPRESENT, TEXT ("SM_MOUSEPRESENT"),        

 

                           TEXT ("Mouse present flag"),

 

    SM_CYVSCROLL,TEXT ("SM_CYVSCROLL"),           

 

                           TEXT ("Vertical scroll arrow height"),

 

    SM_CXHSCROLL,TEXT ("SM_CXHSCROLL"),           

 

                          TEXT ("Horizontal scroll arrow width"),

 

    SM_DEBUG,         TEXT ("SM_DEBUG"),               

 

                           TEXT ("Debug version flag"),

 

    SM_SWAPBUTTON,TEXT ("SM_SWAPBUTTON"),          

 

                           TEXT ("Mouse buttons swapped flag"),

 

    SM_CXMIN,         TEXT ("SM_CXMIN"),               

 

                           TEXT ("Minimum window width"),

 

    SM_CYMIN,         TEXT ("SM_CYMIN"),               

 

                           TEXT ("Minimum window height"),

 

    SM_CXSIZE,        TEXT ("SM_CXSIZE"),              

 

                           TEXT ("Min/Max/Close button width"),

 

    SM_CYSIZE,       TEXT ("SM_CYSIZE"),             

 

                           TEXT ("Min/Max/Close button height"),

 

    SM_CXSIZEFRAME,TEXT ("SM_CXSIZEFRAME"),         

 

                           TEXT ("Window sizing frame width"),

 

    SM_CYSIZEFRAME,TEXT ("SM_CYSIZEFRAME"),         

 

                           TEXT ("Window sizing frame height"),

 

    SM_CXMINTRACK,TEXT ("SM_CXMINTRACK"),          

 

                           TEXT ("Minimum window tracking width"),

 

    SM_CYMINTRACK,TEXT ("SM_CYMINTRACK"),          

 

                           TEXT ("Minimum window tracking height"),

 

    SM_CXDOUBLECLK,TEXT ("SM_CXDOUBLECLK"),         

 

                           TEXT ("Double click x tolerance"),

 

    SM_CYDOUBLECLK,TEXT ("SM_CYDOUBLECLK"),         

 

                           TEXT ("Double click y tolerance"),

 

    SM_CXICONSPACING,TEXT ("SM_CXICONSPACING"),       

 

                           TEXT ("Horizontal icon spacing"),

 

    SM_CYICONSPACING,TEXT ("SM_CYICONSPACING"),       

 

                           TEXT ("Vertical icon spacing"),

 

    SM_MENUDROPALIGNMENT,TEXT ("SM_MENUDROPALIGNMENT"),   

 

                                  TEXT ("Left or right menu drop"),

 

    SM_PENWINDOWS,       TEXT ("SM_PENWINDOWS"),          

 

                                  TEXT ("Pen extensions installed"),

 

    SM_DBCSENABLED,       TEXT ("SM_DBCSENABLED"),         

 

                                  TEXT ("Double-Byte Char Set enabled"),

 

    SM_CMOUSEBUTTONS,        TEXT ("SM_CMOUSEBUTTONS"),       

 

                                 TEXT ("Number of mouse buttons"),

 

    SM_SECURE,               TEXT ("SM_SECURE"),              

 

                                  TEXT ("Security present flag"),

 

    SM_CXEDGE,               TEXT ("SM_CXEDGE"),              

 

                                  TEXT ("3-D border width"),

 

    SM_CYEDGE,               TEXT ("SM_CYEDGE"),              

 

                                  TEXT ("3-D border height"),

 

    SM_CXMINSPACING,         TEXT ("SM_CXMINSPACING"),        

 

                                  TEXT ("Minimized window spacing width"),

 

    SM_CYMINSPACING,         TEXT ("SM_CYMINSPACING"),        

 

                                  TEXT ("Minimized window spacing height"),

 

    SM_CXSMICON,         TEXT ("SM_CXSMICON"),            

 

                                  TEXT ("Small icon width"),

 

    SM_CYSMICON,        TEXT ("SM_CYSMICON"),            

 

                                  TEXT ("Small icon height"),

 

    SM_CYSMCAPTION,       TEXT ("SM_CYSMCAPTION"),         

 

                                  TEXT ("Small caption height"),

 

    SM_CXSMSIZE,         TEXT ("SM_CXSMSIZE"),            

 

                                 TEXT ("Small caption button width"),

 

    SM_CYSMSIZE,         TEXT ("SM_CYSMSIZE"),            

 

                                  TEXT ("Small caption button height"),

 

    SM_CXMENUSIZE,       TEXT ("SM_CXMENUSIZE"),          

 

                                  TEXT ("Menu bar button width"),

 

    SM_CYMENUSIZE,       TEXT ("SM_CYMENUSIZE"),          

 

                                TEXT ("Menu bar button height"),

 

    SM_ARRANGE,              TEXT ("SM_ARRANGE"),             

 

                                  TEXT ("How minimized windows arranged"),

 

    SM_CXMINIMIZED,      TEXT ("SM_CXMINIMIZED"),         

 

                                  TEXT ("Minimized window width"),

 

    SM_CYMINIMIZED,       TEXT ("SM_CYMINIMIZED"),         

 

                                  TEXT ("Minimized window height"),

 

    SM_CXMAXTRACK,       TEXT ("SM_CXMAXTRACK"),         

 

                                  TEXT ("Maximum draggable width"),

 

    SM_CYMAXTRACK,       TEXT ("SM_CYMAXTRACK"),          

 

                                 TEXT ("Maximum draggable height"),

 

    SM_CXMAXIMIZED,       TEXT ("SM_CXMAXIMIZED"),         

 

                                  TEXT ("Width of maximized window"),

 

    SM_CYMAXIMIZED,       TEXT ("SM_CYMAXIMIZED"),         

 

                                  TEXT ("Height of maximized window"),

 

    SM_NETWORK,          TEXT ("SM_NETWORK"),             

 

                                  TEXT ("Network present flag"),

 

    SM_CLEANBOOT,         TEXT ("SM_CLEANBOOT"),           

 

                                  TEXT ("How system was booted"),

 

    SM_CXDRAG,               TEXT ("SM_CXDRAG"),              

 

                                  TEXT ("Avoid drag x tolerance"),

 

    SM_CYDRAG,               TEXT ("SM_CYDRAG"),              

 

                                  TEXT ("Avoid drag y tolerance"),

 

    SM_SHOWSOUNDS,        TEXT ("SM_SHOWSOUNDS"),          

 

                                  TEXT ("Present sounds visually"),

 

    SM_CXMENUCHECK,       TEXT ("SM_CXMENUCHECK"),         

 

                                 TEXT ("Menu check-mark width"),

 

    SM_CYMENUCHECK,       TEXT ("SM_CYMENUCHECK"),         

 

                                 TEXT ("Menu check-mark height"),

 

    SM_SLOWMACHINE,       TEXT ("SM_SLOWMACHINE"),         

 

                                  TEXT ("Slow processor flag"),

 

    SM_MIDEASTENABLED,       TEXT ("SM_MIDEASTENABLED"),      

 

                                  TEXT ("Hebrew and Arabic enabled flag"),

 

    SM_MOUSEWHEELPRESENT,TEXT ("SM_MOUSEWHEELPRESENT"),   

 

                                  TEXT ("Mouse wheel present flag"),

 

    SM_XVIRTUALSCREEN,       TEXT ("SM_XVIRTUALSCREEN"),      

 

                                  TEXT ("Virtual screen x origin"),

 

    SM_YVIRTUALSCREEN,       TEXT ("SM_YVIRTUALSCREEN"),      

 

                                  TEXT ("Virtual screen y origin"),

 

    SM_CXVIRTUALSCREEN,      TEXT ("SM_CXVIRTUALSCREEN"),     

 

                                  TEXT ("Virtual screen width"),

 

    SM_CYVIRTUALSCREEN,      TEXT ("SM_CYVIRTUALSCREEN"),     

 

                                  TEXT ("Virtual screen height"),

 

    SM_CMONITORS,       TEXT ("SM_CMONITORS"),           

 

                                TEXT ("Number of monitors"),

 

    SM_SAMEDISPLAYFORMAT,TEXT ("SM_SAMEDISPLAYFORMAT"),   

 

                                  TEXT ("Same color format flag")

 

} ;

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:792340次
    • 积分:9041
    • 等级:
    • 排名:第2201名
    • 原创:207篇
    • 转载:69篇
    • 译文:1篇
    • 评论:110条
    最新评论