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

来源:互联网 发布:如何看财务报表 知乎 编辑:程序博客网 时间:2024/05/16 04:52

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

 

原创粉丝点击