<menu id="w8yyk"><menu id="w8yyk"></menu></menu>
  • <dd id="w8yyk"><nav id="w8yyk"></nav></dd>
    <menu id="w8yyk"></menu>
    <menu id="w8yyk"><code id="w8yyk"></code></menu>
    <menu id="w8yyk"></menu>
    <xmp id="w8yyk">
    <xmp id="w8yyk"><nav id="w8yyk"></nav>
  • 網站首頁 > 物聯資訊 > 技術分享

    win32 api Windows窗口的創建

    2016-09-28 00:00:00 廣州睿豐德信息科技有限公司 閱讀
    睿豐德科技 專注RFID識別技術和條碼識別技術與管理軟件的集成項目。質量追溯系統、MES系統、金蝶與條碼系統對接、用友與條碼系統對接

    windows窗口的創建有以下幾個步驟:

    1、創建注冊窗口類

    2、創建窗口句柄

    3、顯示更新窗口

    4、消息循環

    1、創建注冊窗口類

    所謂創建窗口類就是定義一個WNDCLASS類對象,并將該對象進行初始化。之后就要用RegisterClass()函數對該窗口類對象進行注冊,以便使某個窗口與該窗口類相關聯。

    關于WNDCLASS的定義如下:

     typedef struct {
        UINT style;
        WNDPROC lpfnWndProc;
        int cbClsExtra;
        int cbWndExtra;
        HINSTANCE hInstance;
        HICON hIcon;
        HCURSOR hCursor;
        HBRUSH hbrBackground;
        LPCTSTR lpszMenuName;
        LPCTSTR lpszClassName;
    } WNDCLASS, *pWNDCLASS;

    成員:
    style

    描述類風格。該成員可以是“Class Styles”的任意組合,styly可以取的值如下所示:

    CS_VREDRAW 垂直重畫
    CS_HREDRAW
    水平重畫
    CS_OWNDC
    獨占設備描述表
    CS_SAVEBITS
    保存窗口覆蓋區
    CS_DBCLKS
    允許兩次連續按動
    CS_BYTEALLGNCLIENT
    鼠標用戶區域按字節對齊顯示
    CS_BYTEALLGNWINDOW
    鼠標用戶窗口按字節對齊顯示
    CS_NOCLOSE
    系統菜單中沒有CLOSE菜單項

    lpfnWndProc
        指向窗口過程的函數指針。必須使用CallWindowProc函數調用窗口過程。
    cbClsExtra
        
    表示窗口類結構之后分配的額外的字節數。系統將該值初始化為0
    cbWndExtra
        
    表示窗口實例之后分配的額外的字節數。系統將該值初始化為0。如果使用資源文件里的CLASS指令創建對話框,并用WNDCLASS注冊該對話框時,cbWndExtra必須設置成DLGWNDOWEXTRA
    hInstance
        
    包含該類實例的句柄,該實例包含了窗口過程。一般直接賦上WinMain()hInstance參數值即可。
    hIcon
        
    類圖標的句柄。該成員必須為一個圖標資源的句柄。可以使用LoadIcon()函數加載圖標。如果hIconNULL,系統將提供默認圖標
    hCursor
        
    鼠標指針的句柄。改成員必須為一個指針資源的句柄。可以使用LoadCursor()去加載光標。如果hCursorNULL,應用程序必須在指針移入應用程序窗口時顯式設置指針類型。
    hbrBackground
        背景畫刷的句柄。該成員或者是用于繪制背景的物理畫刷的句柄,或者是一個顏色值。顏色值必須為如下“標準系統顏色值”(1必須加到選定顏色中)

    BLACK_BRUSH   
    DKGRAY_BRUSH
    GRAY_BRUSH
    HOLLOW_BRUSH  
    空畫刷(相當于NULL_BRUSH) 
    LTGRAY_BRUSH
    NULL_BRUSH    
    等同于HOLLOW_BRUSH
    WHITE_BRUSH   
    BLACK_PEN
    WHITE_PEN
    NULL_PEN
    SYSTEM_FONT  
    默認情況下,系統使用系統字體去繪制菜單、控制對話框和文本等。
    DEFAULT_PALETTE  
    默認的調色板,這個調色板由系統調色板中的靜態顏色組成。

    如果顏色值給定后,必須將該值轉換成如下HBRUSH類型:

    COLOR_ACTIVEBORDER
        COLOR_ACTIVECAPTION
        COLOR_APPWORKSPACE
        COLOR_BACKGROUND
        COLOR_BTNFACE
        COLOR_BTNSHADOW
        COLOR_BTNTEXT
        COLOR_CAPTIONTEXT
        COLOR_GRAYTEXT
        COLOR_HIGHLIGHT
        COLOR_HIGHLIGHTTEXT
        COLOR_INACTIVEBORDER
        COLOR_INACTIVECAPTION
        COLOR_MENU
        COLOR_MENUTEXT
        COLOR_SCROLLBAR
        COLOR_WINDOW
        COLOR_WINDOWFRAME
        COLOR_WINDOWTEXT

    當調用UnregisterClass時,系統自動刪除背景畫刷。應用程序不應刪除這些畫刷。
        
    hbrBackgroundNULL時,應用程序必須在繪制客戶區域時繪制它自己的背景。為了確定背景是否一定要繪制,應用程序或者可以處理 WM_ERASEBKGND消息,或者測試PAINTSTRUCTfErase成員。PAINTSTRUCT是由BeginPaint函數填充的。

    lpszMenuName
        
    指向NULL結束的字符串,該字符串描述菜單的資源名,如同在資源文件里顯示的名字一樣。若使用一個整數標識菜單,可以使用MAKEINTRESOURCE宏。如果lpszMenuNameNULL,那么該窗口類的窗口將沒有默認菜單。
    lpszClassName
        
    指 向NULL結束的字符串,或者是一個原型(atom)。若該參數是一個原型,它必須是一個有先前調用RegisterClass或者RegisterClassEx函數產生的類原型。類原型必須作為lpszClassName的低字,高字必須為0.lpszClassName是一個 字符串,它描述了窗口類名。這個類名可以是由RegisterClass或者RegisterClassEx注冊的名字,或者是任何預定義的控件類名。
    結構信息。

     

    2、創建窗口句柄

    HWND hWnd ;
     hWnd = CreateWindowEx(WS_EX_TOPMOST , 
         "CreateWindows" ,
         "測試" ,
         WS_POPUP ,
         0 , 
         0 ,
         1024 ,
         768 ,
         NULL ,
         NULL ,
         hInstance ,
         NULL) ;
     if(!hWnd)
     {
      return FALSE ;
     }

     

    3、顯示更新窗口

    ShowWindow(hWnd , nCmdShow) ;
     UpdateWindow(hWnd) ;

    4、消息循環

    MSG msg ;
     while(true)
     {
      if(PeekMessage(&msg , NULL , 0U , 0U , PM_REMOVE))
      {
       TranslateMessage(&msg) ;
       DispatchMessage(&msg) ;
      }
     }
    RFID管理系統集成商 RFID中間件 條碼系統中間層 物聯網軟件集成
    最近免费观看高清韩国日本大全