您好,登錄后才能下訂單哦!
一、創建控件或窗口
創建控件或者窗口的API是CreateWindow
按鈕控件的創建,按鈕也是一個窗口,他注冊的窗口類是BUTTON
HWND hWndBtn = CreateWindow(_T("BUTTON"),_T("我是按鈕"),WS_CHILD,0,0,100,30,hWndParent,(HMENU)1,hInst,NULL);
在窗口的hWndParent的RECT(0,0,100,300)區域創建了一個按鈕控件,這個控件的ID是1,代表這個按鈕被
點擊時會向wWndParent窗口發送一個WM_COMMAND消息,wparam參數的低位為1.
3.復選框的創建 修改按鈕本身的風格可把按鈕變成復選框,比如BS_AUTOCHECKBOX就使按鈕
變成了CheckBox, 而且在鼠標點擊時,它的選中狀態會自動改變,如果之前是選中,點擊后就
變成非選中狀態,創建代碼如下
HWND hWndCheckBox = CreateWindow(_T("BUTTON"),_T("我是復選框"),WS_CHILD|
BS_AUTOCHECKBOX,0,0,100,30,hWndParent,(HMENU)2,hInst,NULL);
4.SendMessage LRESULT SendMessage(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam)
向指定的窗口發送特定的消息ID,帶上消息所用的參數,
SendMessage 發送消息后,收消息的窗口必須處理完這個消息,并且返回,SendMessage才會返回.
根據不同的消息類型.返回值的意義不一樣
5.獲得CheckBox的選中狀態,
通過SendMessage給CheckBox控件窗口發送BM_GETCHECK消息,可獲得選中狀態,
SendMessage(hWndChkBox,BM_GETCHECK,0,0)
返回值:如果BST_UNCHECKED代表未選中,如果是BST_CHECKED代表選中
6.手動設置CheckBox狀態的方法
通過SendMessage給CheckBox控件窗口發送BM_SETCHECK消息.
SendMessage(hWndChkBox,BM_SETCHECK,BST_CHECKED,0)
通過以下代碼可以把CheckBox設置非選中狀態
SendMessage(hWndChkBox,BM_SETCHECK,BST_UNCHECKED,0)
7.單選控件
單選控件WS_GROUP 樣式,當有單選控件創建時帶有這個樣式時,
之后創建的單選控件都是這個組的, 直到有右另一個也帶有這個樣式,他又是一個新組
8.窗口居中的實現
窗口上下左右距離 桌面窗口的上下左距離一致 就是居中
RECT rect; GetWindowRect(hwnd,&rect);獲得窗口左上角到主窗口到右上角的xy, 已經窗口右下角到桌面的左上角的xy
獲得高寬方法 就是把右下減去左上,rect.right - rect.left. rect.bottom - rect.top;
把半個屏幕的寬度 減去 半個窗口的寬度, 獲得窗口最左邊要設置的位置.
直接把屏幕寬度 減去窗口的寬度 / 2 也行
然后MoveWindow(); 就行了。
9.MFC組成
a.必須喲預估CWinApp的派生類,并且這個類定義一個全局對象theApp
這個對象初始化的時候. 因為是靜態的,所以他比WinMain函數,
還早執行, 也就是他先執行這個派生自CWinApp的類的構造函數.
b.派生類必須重寫InitInstance虛函數, 作為MFC的入口函數
10.MFC的消息映射機制
a.一個對話框資源要建立和一個派生自CDialog類的關聯,
這個派生類構造的時候,會把這個對話框的資源傳給父類,
b.這個類在調用DoModal即可顯示這個窗口
c.VS的類向導提供快速生成,消息對應的處理函數,
這樣就不需要手動去綁定消息了.
d.如果要收到綁定消息,首先定義處理函數,在這個派生類里
BEGIN_MESSAGE_MAP(CMFC01Dlg, CBCGPDialog)
END_MESSAGE_MAP()
在這兩個宏定義 其實就是消息處理,比如你要添加按鈕被點擊
ON_BN_CLICKED(按鈕ID,消息處理函數)即可。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。