按下Ctrl弹出一个对话框松开关闭此对话框,如何实现?关键字 Ctrl 弹出 对话框 松开关 闭此对话框(一),新建一个单文档工程CtrlEg。(二),在视图类中为WM_KEYDOWN和WM_KEYUP增加响应函数。具体代码如下: Dialog dlg ;//定义成类成员更规范,这儿定成变量是为了方便查看 void CCtrlEgView::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) { if(nChar == VK_CONTROL ) if( NULL == dlg.GetSafeHwnd()) { dlg.Create(IDD_ABOUTBOX); dlg.ShowWindow(SW_SHOW); } CView::OnKeyDown(nChar, nRepCnt, nFlags); } void CCtrlEgView::OnKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags) { if(nChar == VK_CONTROL) dlg.DestroyWindow(); CView::OnKeyUp(nChar, nRepCnt, nFlags); } (三),运行CtrlEg.exe,按Ctrl可以弹出对话框,松开没有关闭此对话框。根本原因是CCtrlEgView并没有收到WM_KEYUP消息。 (四),进行如下修改就好了: void CCtrlEgView::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) { if(nChar == VK_CONTROL ) if( NULL == dlg.GetSafeHwnd()) { dlg.Create(IDD_ABOUTBOX); dlg.ShowWindow(SW_SHOW); SetFocus(); } CView::OnKeyDown(nChar, nRepCnt, nFlags); } 上一篇:如何知道鼠标进入及离开一个视图? 下一篇:对话框完全显示后,马上执行一个按钮的事件 [置顶] 如何给多维数组赋初值
|
|