编写框架窗口过程

【勇芳软件工作室】汉化HomePreviousNext

MDI框架窗口的窗口过程与非MDI应用程序的主窗口类似。不同的是,框架窗口过程将其不处理的所有消息传递给DefFrameProc函数而不是DefWindowProc函数。另外,框架窗口过程还必须传递它处理的一些消息,包括下表中列出的消息。

信息响应
WM_COMMAND激活用户选择的MDI子窗口。当用户从MDI框架窗口的Window菜单中选择MDI子窗口时,会发送此消息。伴随此消息的窗口标识符标识要启动的MDI子窗口。
WM_MENUCHAR当用户按ALT + - (减号)组合键时,打开活动MDI子窗口的窗口菜单。
WM_SETFOCUS将键盘焦点传递到MDI客户端窗口,然后将其传递给活动的MDI子窗口。
WM_SIZE调整MDI客户端窗口以适应新的框架窗口的客户端区域。如果框架窗口过程将MDI客户端窗口大小设置为不同的大小,则不应将消息传递给DefWindowProc函数。

Multipad中的框架窗口过程称为MPFrameWndProc。MPFrameWndProc处理其他消息与非MDI应用程序类似。Multipad中的WM_COMMAND消息由本地定义的CommandHandler函数处理。对于命令消息,Multipad不处理,CommandHandler调用DefFrameProc功能。如果Multipad默认情况下不使用DefFrameProc,则由于通过选择窗口的菜单项(命令)发送的WM_COMMAND消息将丢失,用户无法从“窗口”菜单激活子窗口。