WEB开发网
开发学院软件开发VC Windows SDK笔记(七):创建MDI窗口 阅读

Windows SDK笔记(七):创建MDI窗口

 2009-11-10 20:31:00 来源:WEB开发网   
核心提示:当使用命令方式关闭所有子窗口时,需要枚举所有子窗口进行关闭,Windows SDK笔记(七):创建MDI窗口(4),例:框架窗口响应命令:case IDM_WINDOW_CLOSEALL://针对所有子窗口执行CloseEnumProcEnumChildWindows (hwndClient, CloseEnumPro

当使用命令方式关闭所有子窗口时,需要枚举所有子窗口进行关闭。

例:

框架窗口响应命令:

case IDM_WINDOW_CLOSEALL:
//针对所有子窗口执行CloseEnumProc
EnumChildWindows (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.子窗口在激活时,加载自己菜单到框架窗口

失去焦点时,还原框架菜单。

使用向MDI客户区窗口发送WM_MDISETMENU或WM_MDISETMENU消息。

wParam为菜单句柄,lParam为欲添加窗口列表的子菜单句柄 case WM_MDIACTIVATE:
//激活时,设置框架菜单
if (lParam == (LPARAM) hwnd)
SendMessage (hwndClient, WM_MDISETMENU,
(WPARAM) hMenuHello, (LPARAM) hMenuHelloWindow) ;

//失去焦点时,将框架菜单还原
if (lParam != (LPARAM) hwnd)
SendMessage (hwndClient, WM_MDISETMENU, (WPARAM) hMenuInit,
(LPARAM) hMenuInitWindow) ;

DrawMenuBar (hwndFrame) ;

//注: hwndFrame的得到方法:
//hwndClient = GetParent (hwnd) ;
//hwndFrame = GetParent (hwndClient) ;

return 0 ;

上一页  1 2 3 4 

Tags:Windows SDK 笔记

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接