Windows API一日一练(19)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 //  蔡军生  2007/07/12   QQ:9073204
#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 行那里进行处理。
 
  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

caimouse

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值