教你如何做到显示 Dialog Box(对话框)

来源:互联网 发布:ubuntu 中启动网络服务 编辑:程序博客网 时间:2024/05/01 22:43

原文地址:http://game.chinaitlab.com/freshmen/27810.html

前面介绍的 Debug Message(调试信息) 太简单,不能显示为通常的窗口形式。下面我们用资源编辑工具制作 Dialog Box(对话框),把它显示成窗口形式。
  
  1. 用上回学过的方法新建一个空白工程,命名为 "Dialog" 。
  然后打开 Dialog 文件夹,可以看见里面自动生成的3个文件:
  Dialog.dsp
  Dialog.dsw
  Dialog.ncb
  
  2. 选择菜单 [Insert|插入]-[Resource...|资源...] 打开 [Insert Resource|插入资源] 面板,在左栏内选中 [Dialog|对话框] ,然后点击 [New|新建] :
  

 


  

 


  3. 选中 [OK] 按钮,按 [Delete] 来删除它:
  

 


  4. 右击 [Cancel] 按钮,在关联菜单中选择 [Properties|属性] 打开 [Push Button properties|赋予按钮属性] 面板,在 [General|常规] 选项卡的 [ID:] 栏内键入 "IDC_CLOSE" 、[Caption|内容] 栏内键入 "CLOSE(关闭)" :
  

 


  

 


  5. 从 [Controls|控制] 面板选择 [Static Text|静态文本] 工具 ,在 [Dialog] 窗口上拖曳出文本域:
  

 


  

 


  (如果 [Controls|控制] 面板没有打开,请右击工具条,在弹出菜单中勾选 [Controls|控制] 。)
  
  6. 右击 "Static" 文本域,在关联菜单中选择 [Properties|属性] 打开 [Text properties|文本属性] 面板,在 [General|常规] 选项卡的 [ID:] 栏内键入 "IDC_STATIC" 、[Caption|内容] 栏内键入 "Show Dialog Box(显示对话框)" :
  

 


  7. 适当调整一下 Dialog Box 的大小和布局:
  

 


  8. 关闭资源窗口(Script1),保存资源文件,文件名 "dialog.rc" 。
  然后打开 Dialog 文件夹,可以看见里面新生成的两个文件:
  dialog.rc
  resource.h
  选择菜单 [Project|工程]-[Add To Project|添加到工程]-[Files...|文件...] ,向工程中添加这两个文件://这一步很重要,否则会有莫名奇妙的链接错误!
  

 


  9.  用上回学过的方法向工程中新建一个 C++ Source File(C++源文件),命名为 "dialog" ,向其中键入篇末附带的源程序。
  
  10. 编译并执行!
  OK ?
  


  源程序:
  /**********************************************/
  /*★ 显示 Dialog Box  1999-04-10 前田 稔 ★*/
  /**********************************************/
  #include
  #include "resource.h"
  
  // 函数类型说明
  LRESULT CALLBACK MainDialogProc( HWND, UINT, WPARAM, LPARAM );
  
  // ★ Windows 主函数 ★
  int APIENTRY WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
  LPSTR lpCmdLine, int nCmdShow )
  {
  DialogBox(hInstance,MAKEINTRESOURCE(IDD_DIALOG1),NULL,(DLGPROC)MainDialogProc);
  return TRUE;
  }
  
  // ★ Windows 事件处理 ★
  LRESULT CALLBACK MainDialogProc(HWND hDlg,UINT message,WPARAM wParam,LPARAM lParam)
  {
  switch(message)
  {
  case WM_COMMAND:
  if (LOWORD(wParam)==IDC_CLOSE)  PostQuitMessage(0);
  return TRUE;
  break;
  case WM_CLOSE:
  EndDialog(hDlg, TRUE);
  return TRUE;
  break;
  }
  return FALSE;
  }

原创粉丝点击