一.
对话框可以分为两类:模态的和非模态的。
模态对话框是指不能再对话框和同一个程序的另一个窗口间进行切换。
二.模态对话框常用API
DialogBox (hInstance, TEXT ("AboutBox"), hwnd, AboutDlgProc) ;
//激活对话框过程
hWndCtrl=GetDlgItem(hDlg,id);
//通过对话框句柄和控制id来获取对话框控制的句柄
id=GetWindowLong(hwndCtrl,GWL_ID);
//通过窗口句柄来获取id
CheckRadioButton(hDlg,idFirst,idLast,idCheck);
//从idFirst到idLast之间的所有单选标记全部清除,ID为idCheck的单选按钮是唯一被选中的,这里的ID必须是连续的
CheckDlgButton(hDlg,idCheckbox,iCheck);
//如果iCheck为1,按钮被选中;如果设置为0,按钮被取消
iCheck=IsDlgButtonChecked(hDlg,idChecked);
//可以使用这个方法来获取对话框中某个复选框的状态
三.非模态对话框常用API
hDlgModeless = CreateDialog (hInstance, TEXT ("ColorScrDlg"),
hwnd, ColorScrDlg) ;
//激活非模态对话框,ColorScrDlg为非模态对话框消息队列
四.一个调色框的代码
#include <windows.h> #include <commdlg.h> int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow) { static CHOOSECOLOR cc ; static COLORREF crCustColors[16] ; cc.lStructSize = sizeof (CHOOSECOLOR) ; cc.hwndOwner = NULL ; cc.hInstance = NULL ; cc.rgbResult = RGB (0x80, 0x80, 0x80) ; cc.lpCustColors = crCustColors ; cc.Flags = CC_RGBINIT | CC_FULLOPEN ; cc.lCustData = 0 ; cc.lpfnHook = NULL ; cc.lpTemplateName = NULL ; return ChooseColor (&cc) ; }