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

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

 2009-11-10 20:31:00 来源:WEB开发网   
核心提示:五、子窗口的管理1.概述给MDI客户区窗口发控制消息即可如:case WM_COMMAND:switch (LOWORD (wParam)){case IDM_WINDOW_TILE:SendMessage (hwndClient, WM_MDITILE, 0, 0) ;return 0 ;case IDM_WINDO

五、子窗口的管理

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.关闭所有子窗口

上一页  1 2 3 4  下一页

Tags:Windows SDK 笔记

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