编写主要消息循环

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

MDI应用程序的主要消息循环与非MDI应用程序处理加速键相似。不同之处在于MDI消息循环在检查应用程序定义的加速键之前或在分派消息之前调用TranslateMDISysAccel函数。

以下示例显示了典型MDI应用程序的消息循环。

while(GetMessage(& msg,(HWND)NULL,0,0))

{

if(!TranslateMDISysAccel(hwndMDIClient,& msg)& &

!TranslateAccelerator(hwndFrame,hAccel,& msg))

{

TranslateMessage(&msg);

DispatchMessage(&msg);

}

}

TranslateMDISysAccel功能将WM_KEYDOWN消息转换为WM_SYSCOMMAND消息,并将其发送到活动的MDI子窗口。如果消息不是MDI加速器消息,该函数返回FALSE,在这种情况下,应用程序使用TranslateAccelerator函数来确定是否按下了任何应用程序定义的加速键。如果没有,循环将消息发送到适当的窗口过程。