MFC应用实例:[7]双击主窗口弹出打开对话框
1、新建一个多重文档的MFC应用,工程的名字为Open
2、在工作区选择classview标签,展开Open classes,右击CMainFrame类,在弹出的菜单中选择add WindowsMessage Handler 命令,在弹出的对话框中的新建windows消息/事件列表框中选择WM_LBUTTONDBLCLK选项,单击add and Edit
3、在OnLButtonDblClk()函数里面添加代码如下:void CMainFrame::OnLButtonDblClk(UINT nFlags, CPoint point){ // TODO: Add your message handler code here and/or call default AfxGetApp()->m_pDocManager->OnFileOpen(); CMDIFrameWnd::OnLButtonDblClk(nFlags, point);}
4、在上面的OnCreate()函数中添加一下代码// 为响应鼠标双击客户区的事件所增加的属性:CS_DBLCLKS HWND hMDIClientArea = GetWindow(GW_CHILD)->GetSafeHwnd(); ::SetClassLong(hMDIClientArea, GCL_STYLE, ::GetClassLong(hMDIClientArea,GCL_STYLE) | CS_DBLCLKS);
5、在工作区选择classview标签,展开Openclasses,右击CMainFrame类,在弹出的菜单中选择add virtual function 命令。在弹出的对话框中的Newvirtual function列表框中选择PreTranslateMessage,最后单击add and edit
6、在函数PreTranslateMessage()添加一下代码:BOOL CMain掂迎豢畦Frame::PreTranslateMessage(MSG忮氽阝另* pMsg){ // TODO: Add your specialized code here and/or call the base class // 如果是在主客户区双击鼠标,则发送WM_LBUTTONDBLCLK消息 if(pMsg->hwnd == m_hWndMDIClient && pMsg->message == WM_LBUTTONDBLCLK) PostMessage(WM_LBUTTONDBLCLK); // 发送鼠标双击消息 return CMDIFrameWnd::PreTranslateMessage(pMsg);}
7、运行结果在客户区双击出现打开对话框如下: