何志丹
(一),新建一个单文档工程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);
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~