您的位置:首页 > 其它

Win32学习笔记——对话框资源

2006-10-14 19:35 246 查看
对话框资源
1.对话框的种类
模式对话框:不允许用户在关闭对话框前切换到该应用程序的其他窗口
非模式对话框:允许用户在给对话框与应用程序的其他窗口间切换
2.模式对话框的使用
1)定义对话框资源
对话框名 DIALOG [载入特性选项] X,Y,Width,Height [设置选项]//(可分多行)
{
//对话框的控件定义
}
说明:
(a) 载入特性选项:与菜单定义时同
(b) X,Y,Width,Height:对话框左上角坐标(相对于用户区)的横坐标,纵坐标,对话框的宽,高
(c) [设置选项]:设置CAPTION(标题)和STYLE(样式)
格式:
STYLE 样式标识符
CAPTION "标题名"
FONT 字号大小 "字体"
说明:
样式标识符:
样式 说明
DS_3DLOOK 使用三维边框
DS_SHADOW 带阴影的对话框
DS_FIXEDSYS 使用SYSTEM_FIXED字体
DS_CENTER 对话框居中
DS_MODALFRAM 使用细实线边框
DS_SETFOREGROUND 置对话框于前台
DS_SYSMODAL 系统模式对话框
(d) 控件定义:控件关键字 "控件名" ID等 控件位置与尺寸
控件 说明
CHECKBOX 复选框
ICON 图标
COMBOBOX 组合框
LISTBOX 列表框
CTEXT 文本居中的静态控件
LTEXT 文本左对齐的静态控件
DEFPUSHBUTTON 缺省按钮
USHBUTTON 按钮
EDITTEXT 编辑框
PADIOBUTTON 圆按钮
GROUPBOX 组框
RTEXT 文本右对齐的静态控件
SCROLLBAR 滚动条

2)显示对话框
int DialogBox
(
HINSTANCE hInstance, //当前应用程序的实例句柄
LPCTSTR lpszDialogName, //对话框资源的名称
HWND hwndParent, //拥有该对话框的窗口句柄
WNDPROC lpDialogFunc //对话框处理函数的地址
)

3)对话框消息处理函数
BOOL CALLBACK DlgProc(HWND hDlg,UINT iMessage,UINT wParam,LONG lParam)
{
switch(iMessage)
{
case WM_INITDIALOG:
……
break;
case WM_COMMAND:
{
switch(LOWORD(wParam))
{
case IDOK:
::EndDialog(hDlg,0);
break;
……
default:
return 0;
}
}
break;
case WM_CLOSE:
::EndDialog(hDlg,0);
break;
……
default:
return 0;
}
return 1;
}
对话框消息处理函数中主要处理的两类消息:
(a) WN_ INITDIALOG消息:完成其初始化操作
(b) WM_COMMAND消息:通过查看消息字参数(wParam)中的低位字节,与控件标识(ID)相比较,
以确定产生交互请求的控件并据此转入相应的处理过程处理。
对话框消息处理函数与主窗口消息处理函数的区别:
对话框消息处理函数 主窗口消息处理函数
函数返回值 BOOL值 LRESULT值
WM_CREATE、WM_PAINT、WM_DESTROY 不处理 处理
未定义处理过程的缺省处理 return FALSE return DefwindowProc(…)
4)关闭对话框
EndDialog (hdlg,nResult);
5)一种特殊的模态对话框:MessageBox
int MessageBox
(
HWND hwnd, //拥有消息框的窗口
LPCTSTR lpszText, //消息框中显示的字符串
LPCTSTR lpszCaption, //作为标题的字符串
DWORD dwType //指定消息框的内容
)
dwType:
标识 说明
MB_ABORTRETRYIGNORE 含有abort、retry、ignore按钮的消息框
MB_ICONSTOP 含有停止图标的消息框
MB_OK 含有确定按钮的消息框
MB_OKCANCLE 含有确定、取消按钮的消息框
MB_YESNOCANCLE 含有YES、NO、CANCEL按钮的消息框
3.非模态对话框
1) 定义对话框资源
与定义模态对话框类同,只是定义样式中有些要注意的地方:
eg:STYLE WS_POPUP | WS_CAPTION | WS_VISIBLE
其中:WS_VISIBLE不可省略,否则非模态对话框将无法在屏幕上显示;
WS_CAPTION 也往往不省略
2) 创建对话框函数
HWND CreateDialog
(
HINSTANCE hInstance, //当前应用程序实例句柄
LPCTSTR lpszDialogName, //对话框名
HWND hwndParent, //拥有该对话框的窗口句柄
WNDPROC lpDialogFunc //对话框处理函数地址
)
3) 消息循环部分的处理
由于非模态对话框并不禁止应用程序向其他窗口发送消息,因此,在WINMAIN函数的
消息循环中必须包含截获发往非模态对话框的消息,并将其发往相应的对话框处理函数进
行处理。其消息循环过程的一般形式为:
while (GetMessage (&Msg,NULL,0,0))
{
if (!IsDialogMessage (hdlg,&Msg))
{
TranslateMessage (&Msg);
DispatchMessage (&Msg);
}
}

4) 关闭对话框的函数
BOOL DestroyWindow (HWND hdlg)(与模态对话框关闭函数不同)

5.通用对话框资源的使用
1) 设置通用对话框数据结构的值
系统通用对话框数据结构如下:
OPENFILENAME:打开文件/另存为通用对话框的数据结构
CHOOSECOLOR:颜色数据结构
CHOOSEFONT:字体数据结构
PRINTDLG:打印对话框数据结构
PAGESETUPDLG:页面设置数据结构
FINDREPLACE:查找对话框数据结构
2) 调用函数显示对话框
ChooseFont(…) 显示“字体”对话框
ChooseColor(…) 显示“颜色”对话框
PrintDlg(…) 显示“打印”对话框
PageSetupDlg(…) 显示“页面设置”对话框
FindText(…) 显示“查找”对话框
ReplaceText(…) 显示“替换”对话框
GetOpenFileName(…) 显示“打开文件/另存为”对话框
GetSaveFileName(…) 显示“保存”对话框
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: