45fan.com - 路饭网

搜索: 您的位置主页 > 电脑频道 > 电脑教程 > 阅读资讯:Win32学习笔记知识

Win32学习笔记知识

2016-09-06 11:43:25 来源:www.45fan.com 【

Win32学习笔记知识

对话框资源
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 FALSEreturn 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(…)显示“保存”对话框

 

本文地址:http://www.45fan.com/dnjc/73096.html
Tags: 学习 笔记 WIN32
编辑:路饭网
关于我们 | 联系我们 | 友情链接 | 网站地图 | Sitemap | App | 返回顶部