网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 论文素材 设计下载 最新论文 下载排行 论文上传 在线投稿 联系我们
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > VC++ > 正文
Windows SDK笔记(七):创建MDI窗口
来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/15
下载{$ArticleTitle}原创论文样式
0 ; //针对子窗口的命令又子窗口去处理 default:hwndChild = (HWND) SendMessage (hwndClient, WM_MDIGETACTIVE, 0, 0) ;if (IsWindow (hwndChild))SendMessage (hwndChild, WM_COMMAND, wParam, lParam) ; break ; //..and then to DefFrameProc}break ; //跳出针对WM_COMMAND的case分支,又DefFrameProc处理剩下的命令 五、子窗口的管理
1.概述
给MDI客户区窗口发控制消息即可
如:
case WM_COMMAND:switch (LOWORD (wParam)){case IDM_WINDOW_TILE:SendMessage (hwndClient, WM_MDITILE, 0, 0) ;return 0 ;               case IDM_WINDOW_CASCADE:SendMessage (hwndClient, WM_MDICASCADE, 0, 0) ;return 0 ;               case IDM_WINDOW_ARRANGE:SendMessage (hwndClient, WM_MDIICONARRANGE, 0, 0) ;return 0;                       //        //}break;
2.当前子窗口的关闭
关闭当前激活窗口时,先向该窗口发送查询消息:WM_QUERYENDSESSION。
子窗口的消息处理循环中响应此消息,作关闭前的一些处理,若能关闭,返回真
否则返回假。
框架窗口中根据此返回值决定是否关闭窗口。

如果用户直接按下子窗口的关闭按钮,则WM_CLOSE消息直接发送到了子窗口消息处理函数。

例如:
框架窗口命令处理中:

case IDM_FILE_CLOSE:          //获得当前激活窗口hwndChild = (HWND) SendMessage (hwndClient, WM_MDIGETACTIVE, 0, 0);//询问通过后,销毁窗口if (SendMessage (hwndChild, WM_QUERYENDSESSION, 0, 0))     SendMessage (hwndClient, WM_MDIDESTROY, (WPARAM) hwndChild, 0);return 0;
子窗口的消息处理函数中:
LRESULT CALLBACK HelloWndProc (HWND hwnd, UINT message,                                WPARAM wParam, LPARAM lParam){     switch (message)     {////     case WM_QUERYENDSESSION:     case WM_CLOSE:          if (IDOK != MessageBox (hwnd, TEXT ("OK to close window?"),                                  TEXT ("Hello"),                                   MB_ICONQUESTION | MB_OKCANCEL))               return 0 ;                         break ;   // i.e., call DefMDIChildProc     }     return DefMDIChildProc (hwnd, message, wParam, lParam) ;}
3.关闭所有子窗口
当使用命令方式关闭所有子窗口时,需要枚举所有子窗口进行关闭。
例:
框架窗口响应命令:
case IDM_WINDOW_CLOSEALL:    //针对所有子窗口执行CloseEnumProcEnumChildWindows (hwndClient, CloseEnumProc, 0) ;return 0 ;
枚举函数:
BOOL CALLBACK CloseEnumProc (HWND hwnd, LPARAM lParam){     if (GetWindow (hwnd, GW_OWNER))         // Check for icon title          return TRUE ;          SendMessage (GetParent (hwnd), WM_MDIRESTORE, (WPARAM) hwnd, 0) ;          if (!SendMessage (hwnd, WM_QUERYENDSESSION, 0, 0))          return TRUE ;          SendMessage (GetParent (hwnd), WM_MDIDESTROY, (WPARAM) hwnd, 0) ;     return TRUE ;}
六、菜单控制
在MDI程序中,可以根据激活的子窗口而切换框架窗口的菜单。
并且,可以将窗口列表添加到菜单中去。所添加的菜单项命令是又框架对应的缺省消息处理函数完成的。
1.为每种窗口类准备一套菜单资源
2.装载菜单,得到菜单句柄
3.框架在建立时,使用框架菜单的句柄作为参数。
4.子窗口在激活时,加载自己菜单到框架窗口

网学推荐

免费论文

原创论文

浏览:
设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
湘ICP备09003080号