DestroyWindow函数

以前已经介绍过直接点击关闭按钮来关闭应用程序,但想删除一个窗口对象,需要用到什么函数的呢?比如创建了 30 个窗口,想把第 12 个窗口关闭删除掉,那就需要使用函数 DestroyWindow 。当调用 DestroyWindow 函数后,操作系统就会进行一系列的删除动作,先发送 WM_DESTROY 消息,接着发送 WM_NCDESTROY 消息。如果这个窗口还有子窗口或者是其它窗口的所有者,就需要给所有子窗口发送删除消息。
 
函数 DestroyWindow 声明如下:
WINUSERAPI
BOOL
WINAPI
DestroyWindow(
    __in HWND hWnd);
hWnd 是要删除的窗口句柄。
 
调用这个函数的例子如下:
#001 //
#002 //  函数 : WndProc(HWND, UINT, WPARAM, LPARAM)
#003 //
#004 //  目的 处理主窗口的消息 .
#005 //
#006 //
#007 //
#008 LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
#009  {
#010  int wmId, wmEvent;
#011  PAINTSTRUCT ps;
#012  HDC hdc;
#013 
#014  switch (message)
#015  {
#016  case WM_COMMAND:
#017         wmId    = LOWORD(wParam);
#018         wmEvent = HIWORD(wParam);
#019         // 菜单选项命令响应 :
#020         switch (wmId)
#021         {
#022         case IDM_ABOUT:
#023               DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About);
#024               break;
#025         case IDM_EXIT:
#026              DestroyWindow(hWnd);
#027               break;
#028         default:
#029               return DefWindowProc(hWnd, message, wParam, lParam);
#030         }
#031         break;
#032  case WM_PAINT:
#033         hdc = BeginPaint(hWnd, &ps);
#034         //
#035         EndPaint(hWnd, &ps);
#036         break;
#037  case WM_DESTROY:
#038         PostQuitMessage(0);
#039         break;
#040  default:
#041         return DefWindowProc(hWnd, message, wParam, lParam);
#042  }
#043  return 0;
#044 }
26 行是当收到菜单按钮退出命令的消息,就调用函数 DestroyWindow ,然后它发出消息 WM_DESTROY 给第 37 行那里进行处理。

你可能感兴趣的:(command,callback)