<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > MFC和Win32技術(shù)應(yīng)用分析

          MFC和Win32技術(shù)應(yīng)用分析

          作者: 時間:2018-09-05 來源:網(wǎng)絡(luò) 收藏

          本文引用地址:http://www.ex-cimer.com/article/201809/388505.htm

          “窗口類”的數(shù)據(jù)結(jié)構(gòu)

          “窗口類”是Windows系統(tǒng)的數(shù)據(jù)結(jié)構(gòu),可以把它理解為Windows系統(tǒng)的類型定義,而Windows窗口則是相應(yīng)“窗口類”的實例。Windows使用一個結(jié)構(gòu)來描述“窗口類”,其定義如下:

          typedef struct _WNDCLASSEX {

          UINT cbSize; //該結(jié)構(gòu)的字節(jié)數(shù)

          UINT style; //窗口類的風(fēng)格

          WNDPROC lpfnWndProc; //窗口過程

          int cbClsExtra;

          int cbWndExtra;

          HANDLE hInstance; //該窗口類的窗口過程所屬的應(yīng)用實例

          HICON hIcon; //該窗口類所用的像標

          HCURSOR hCursor; //該窗口類所用的光標

          HBRUSH hbrBackground; //該窗口類所用的背景刷

          LPCTSTR lpszMenuName; //該窗口類所用的菜單資源

          LPCTSTR lpszClassName; //該窗口類的名稱

          HICON hIconSm; //該窗口類所用的小像標

          } WNDCLASSEX;

          從“窗口類”的定義可以看出,它包含了一個窗口的重要信息,如窗口風(fēng)格、窗口過程、顯示和繪制窗口所需要的信息,等等。關(guān)于窗口過程,將在后面消息映射等有關(guān)章節(jié)作詳細論述。

          Windows系統(tǒng)在初始化時,會注冊(Register)一些全局的“窗口類”,例如通用控制窗口類。應(yīng)用程序在創(chuàng)建自己的窗口時,首先必須注冊自己的窗口類。在MFC環(huán)境下,有幾種方法可以用來注冊“窗口類”,下面分別予以討論。

          調(diào)用AfxRegisterClass注冊

          AfxRegisterClass函數(shù)是MFC全局函數(shù)。AfxRegisterClass的函數(shù)原型:

          BOOL AFXAPI AfxRegisterClass(WNDCLASS *lpWndClass);

          參數(shù)lpWndClass是指向WNDCLASS結(jié)構(gòu)的指針,表示一個“窗口類”。

          首先,AfxRegisterClass檢查希望注冊的“窗口類”是否已經(jīng)注冊,如果是則表示已注冊,返回TRUE,否則,繼續(xù)處理。

          接著,調(diào)用::RegisterClass(lpWndClass)注冊窗口類;

          然后,如果當前模塊是DLL模塊,則把注冊“窗口類”的名字加入到模塊狀態(tài)的域m_szUnregisterList中。該域是一個固定長度的緩沖區(qū),依次存放模塊注冊的“窗口類”的名字(每個名字是以“n看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();