久久ER99热精品一区二区-久久精品99国产精品日本-久久精品免费一区二区三区-久久综合九色综合欧美狠狠

新聞中心

EEPW首頁 > 嵌入式系統 > 設計應用 > MFC和Win32技術應用分析

MFC和Win32技術應用分析

作者: 時間:2018-09-05 來源:網絡 收藏

本文引用地址:http://cqxgywz.com/article/201809/388505.htm

“窗口類”的數據結構

“窗口類”是Windows系統的數據結構,可以把它理解為Windows系統的類型定義,而Windows窗口則是相應“窗口類”的實例。Windows使用一個結構來描述“窗口類”,其定義如下:

typedef struct _WNDCLASSEX {

UINT cbSize; //該結構的字節數

UINT style; //窗口類的風格

WNDPROC lpfnWndProc; //窗口過程

int cbClsExtra;

int cbWndExtra;

HANDLE hInstance; //該窗口類的窗口過程所屬的應用實例

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

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

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

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

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

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

} WNDCLASSEX;

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

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

調用AfxRegisterClass注冊

AfxRegisterClass函數是MFC全局函數。AfxRegisterClass的函數原型:

BOOL AFXAPI AfxRegisterClass(WNDCLASS *lpWndClass);

參數lpWndClass是指向WNDCLASS結構的指針,表示一個“窗口類”。

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

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

然后,如果當前模塊是DLL模塊,則把注冊“窗口類”的名字加入到模塊狀態的域m_szUnregisterList中。該域是一個固定長度的緩沖區,依次存放模塊注冊的“窗口類”的名字(每個名字是以“n