显示非模式对话框实例(一)

2013-02-08 14:31:47 · 作者: · 浏览: 896

  使用API函数CreateDialog和CreateDialogParam.
  结束非模式对话框使用DestroyWindow函数,而不是EndDialog函数。
  非模式对话框建立后收到的第一条消息任然是WM_INITDIALOG.
  如果资源中没有指定WS_VISIBLE属性,则非模式对话框创建后不会立刻显示出来,要调用Showwindow函数才能让其显示。
  、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
  、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
  新建简单的Win32项目ModallessDlg
  向工程添加一个对话框资源,其ID为IDD_MAIN
  将系统自动生成的ModallessDlg.cpp文件修改如下:
  [cpp]
  #include "tchar.h"
  #include "resource.h"
  ///对话框过程,处理各种消息
  BOOL CALLBACK DlgProc(HWND hwndDlg ,UINT uMsg ,WPARAM wParam ,LPARAM lParam)
  {
  switch(uMsg)
  {
  case WM_CREATE:
  OutputDebugString(_T("收到了WM_Create消息\n"));
  break;
  case WM_INITDIALOG:
  OutputDebugString(_T("收到了WM_InitDialog消息\n"));
  break;
  case WM_COMMAND:
  switch(LOWORD(wParam))
  {
  case IDOK:
  break;
  case IDCANCEL:
  DestroyWindow(hwndDlg);
  //EndDialog(hwndDlg , 1);
  return true;
  }
  break;
  case WM_CLOSE:
  DestroyWindow(hwndDlg);
  //  EndDialog(hwndDlg , 0);
  return true;
  case WM_DESTROY:
  OutputDebugString(_T("对话框即将被销毁\n"));
  PostQuitMessage(0);
  return true;
  default:
  break;
  }
  return false;
  }
  int APIENTRY WinMain(HINSTANCE hInstance,
  HINSTANCE hPrevInstance,
  LPSTR     lpCmdLine,
  int       nCmdShow)
  {
  // TODO: Place code here.