<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>
  • 網站首頁 > 物聯資訊 > 技術分享

    【Demo 0025】注冊/反注冊窗體類RegisterClassEx/UnregisterClass

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

    所有窗體在創建前都必須注冊窗體類,只有注冊的窗體類才被系統認知并允許實例化,換句話說通過注冊告訴進程窗體管理器此類窗體的屬性如: 背景色,窗體上的鼠標樣式以及窗體事件處理函數等;  有一些控件類系統自帶了的可以不用注冊即可實例化,在不需要時反注冊掉,以便釋放類占用的內存。

    (一)  函數聲明

       I). 類注冊

          ATOM RegisterClassEx(CONST WNDCLASSEX *lpwcx );

           注冊一個窗體類,以便通用CreateWindowEx, CreateWindow來實例化一個窗體

     

           ATOM RegisterClass(CONST WNDCLASS *lpWndClass );

           與RegisterClassEx功能一樣, 僅參數WNDCLASS中不支持iconsm的設置

     

          Code1: 以下代碼演示了如何注冊一個函數, 必須要設置的參數

          1.  類名

          2.  窗體過程函數

      
    //////////////////////////////////////////////////////////////////////////
    bool RegisterWndClass(HINSTANCE hInstance, const TCHAR* szClsName)
    {
        WNDCLASSEX wcs        = {0};
        wcs.cbSize            = sizeof(WNDCLASSEX);
        wcs.hbrBackground    = (HBRUSH)GetStockObject(COLOR_APPWORKSPACE);
        wcs.lpszClassName    = szClsName;
        wcs.lpfnWndProc        = WndProc;
        wcs.hCursor            = LoadCursor(NULL, MAKEINTRESOURCE(IDC_ARROW));
        wcs.hIcon            = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_APPLICATION));
        wcs.style            = CS_VREDRAW|CS_HREDRAW;
        
        return (0 != RegisterClassEx(&wcs));
    }

    II).  類反注冊

           BOOL UnregisterClass(LPCTSTR lpClassName, HINSTANCE hInstance);

           從進程中清除己注冊的類,并釋放類占用的內存,

         

           Code2.  以下代碼演示了反注冊現有類

       if (WM_QUIT == Msg.message)
    {
        if (UnregisterClass(gszClsName, ghInstance))
        {
            TCHAR szInfo[256];
            _stprintf(szInfo, _T("Destroy [%s] window class"), gszClsName);
            OutputDebugString(szInfo);
        }
        return;
    }

          注: 因為只有一個窗體在注冊類之必須確保消除了此類的實例

     

    (二) 特別說明

         1.  注冊后的類與C++中的類意義是一樣的, 他們有著共同的屬性,同樣的類名, 同樣的窗體處理函數以及背景色

         2.  同一個類在一個進程中只有注冊一次(除非反注冊后),若類己存在時再注冊會返回失敗

         3.  清除類前必須要消除此類的實例才能成功

     

    演示代碼

     

     

    from:http://www.cnblogs.com/ztercel/archive/2011/08/15/2139972.html

    RFID管理系統集成商 RFID中間件 條碼系統中間層 物聯網軟件集成
    最近免费观看高清韩国日本大全