一 對話框
1 對話框的分類
2 對話框的基本使用方式
3 對話框資源
4 有模式對話框的使用
5 無模式對話框的使用
5.1 添加對話框資源
5.2 定義窗口處理函數
BOOL CALLBACK DialogProc(
HWND hwndDlg, // handle to dialog box
UINT uMsg, // message
WPARAM wParam, // first message parameter
LPARAM lParam ); // second message parameter
5.3 創建對話框
HWND CreateDialog(
HINSTANCE hInstance,//應用程序實例句柄
LPCTSTR lpTemplate,//對話框的資源ID
HWND hWndParent,//父窗口
DLGPROC lpDialogFunc );//對話框的窗口處理函數
返回值是創建好的對話框的窗口句柄。
5.4 顯示對話框
ShowWindow
5.5 關閉對話框
EndDialog
5.6 與有模式對話框對比
創建函數: 有模式對話框 DialogBox
無模式對話框 CreateDialog
程序執行方式:
有模式對話框會阻塞,禁止其他窗口的輸入
無模式對話框會讓主程序,不影響其它窗口的輸入
6 對話框中的消息
WM_INITDIALOG消息,用途類似於WM_CREATE消息
可以在對話框創建完成後,進行數據初始化.
它與WM_CREATE不同之處是,WM_INITDIALOG消息
會在對話框資源模板上的所有子控件(按鈕等)
創建完成後,再發送給對話框窗口.
wParam - 當前接受輸入焦點子控件窗口句柄
lParam - 創建時附帶的參數
7 對話框和普通窗口的對比
7.1 創建方式
普通窗口: CreateWindow/Ex
對話框: DialogBox/CreateDialog
7.2 消息
普通窗口: 會收到WM_CREATE
對話框: WM_INITDIALOG
7.3 關閉方式:
普通窗口: DestoryWindow等
對話框: EndDialog
二 子控件
1 子控件
1.1 控件的類型
由Windows系統定義的窗口類型,可以提供
相應的功能.包括按鈕、文本編輯框、靜態框等.
1.2 控件的創建
都可以使用CreateWindow/CreateWindowEx
創建,並獲取到控件HWND。創建時每個子控件
都要有相應的ID號,ID號要求不重複。
1.3 控件的消息
子控件和父窗口(一般窗口或者對話框)的交互
都是通過消息完成。如果子窗口狀態發生變化,
子窗口會向父窗口發送相應的消息。
一般父窗口會使用SendMessage函數向子窗口
發送消息。
父窗口響應子窗口發送的消息一般是在
WM_COMMAND進行處理。
三 靜態框
1 靜態框創建
窗口類的名稱 - STATIC, 用於窗口上
顯示文字等, 如果使用SS_ICON/SS_BITMAP
風格可以顯示ICON和BITMAP
文本靜態框 - 創建時使用SS_SIMPLE即可
ICON靜態框 - 創建時需要使用SS_ICON, 並且
將靜態框的窗口名稱設置成對應ICON的資源
ID號,例如"#101".
2 靜態框的命令相應
2.1 靜態框要添加SS_NOTIFY風格
2.2 WM_COMMAND進行處理
WPARAM - HIWORD 命令ID
LOWORD 靜態框的窗口ID
LPARAM - 靜態框的窗口句柄.
3 靜態框的消息
調用SendMessage函數,向Static控件發送消息
例如: STM_SETICON消息修改控件顯示圖標
SendMessage( hStatic, STM_SETICON,
(WPARAM)hIcon, 0 );
其他:
GetDlgItem 從窗口中獲取指定ID的子控件的
窗口句柄
四 按鈕
1 按鈕的分類
根據創建按鈕時使用的風格:
1.1 下壓式按鈕 PUSH BUTTON
正常下壓式按鈕 BS_PUSHBUTTON
三態下壓按鈕 BS_3STATE/BS_AUTO3STATE
1.2 分組按鈕 Group Button
按鈕樣式:BS_GROUPBOX
1.3 多選按鈕 Check Box
按鈕樣式:BS_CHECKBOX/BS_AUTOCHECKBOX
1.4 單選按鈕 Radio Box
按鈕樣式:BS_RADIOBUTTON/
BS_AUTORADIOBUTTON
2 下壓式按鈕的使用
2.1 創建按鈕
創建時使用BUTTON
2.2 命令消息
BN_CLICKED消息: 當點擊按鈕通過
WM_COMMAND消息通知父窗口
2.3 通知消息
SendMessage
3 分組按鈕
3.1 創建分組按鈕
3.2 常用於對窗口內控件劃分區域,增加
界面的友好性
4 多選按鈕 CheckBox
4.1 創建使用 BS_CHECKBOX/BS_AUTOCHECKBOX
BS_AUTOCHECKBOX 選擇狀態系統自動維護
BS_CHECKBOX 選擇狀態需要自己維護
4.2 命令響應
BN_CLICKED 通過WM_COMMAND消息
4.3 通知消息
BM_GETCHECK 獲取當前按鈕被選擇的狀態
BM_SETCHECK 設置當前按鈕被選擇的狀態
wParam 用於設置狀態標示
狀態: BST_CHECKED 或 BST_UNCHECKED
5 單選按鈕 RadioBox
5.1 創建使用 BS_RADIOBUTTON/BS_AUTORADIOBUTTON
BS_AUTORADIOBUTTON 選擇狀態系統自動維護
BS_RADIOBUTTON 選擇狀態需要自己維護
注意:
RadionBox分組 - 使用WS_GROUP樣式,可以將
RadionBox分成多個組.
A CreateWindow ( ,,,WS_GROUP );
B CreateWindow...
C CreateWindow ( ,,,WS_GROUP );
D CreaetWindow...
A和B是一組, C和D是一組
5.2 命令響應
BN_CLICKED 通過WM_COMMAND消息
5.3 通知消息
與CheckBox類似
五 文本編輯框
1 文本編輯框的樣式
1.1 單行文本編輯框 - 默認樣式
1.2 多行文本編輯框 - ES_MULTILINE
1.3 密碼文本編輯框 - ES_PASSWORD
2 文本編輯框的使用
2.1 創建
窗口類名稱EDIT.
2.2 Notify消息
EN_CHANGE 當編輯框內容發生變化時,
會通知父窗口
2.3 EDIT窗口消息
EM_SETSEL 選擇消息 WPARAM是起始字符位置
LPARAM是終止字符位置
窗口消息: WM_COPY, WM_PASET,WM_CUT等消息
WM_SETTEXT, WM_GETTEXT, WM_GETTEXTLEN
SetWindowText
GetWindowText/GetWindowTextLen
win32(九)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.