按下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);
}
相关文章
selenium+python:点击元素、alert弹框、鼠标操作(左键点击、右键点击、双击、鼠标悬浮)、下拉选项框、窗口切换等操作的处
selenium+python:点击元素、alert弹框、鼠标操作(左键点击、右键点击、双击、鼠标悬浮)、下拉选项框、窗口切换等操作的处
禁止鼠标右键和鼠标选中
1.禁止鼠标右键菜单 contextmenu 主要控制应该什么时候显示上下文菜单,主要用于取消默认的上下文菜单。
按下鼠标右键的时候如何截图
点击右键,出现要操作的菜单项 鼠标移动到,想要操作的菜单项上 这时候按下鼠标左键 最后再按下crtl+a,有的电脑是crtl+alt+a,就截图成功了,这时候是所有屏幕的截图 打开word文件,或者打开画图工具,ctrl+v,就把整张截图粘贴上面了 可以跟进自己需求,再次截图,选择自己想要的部分
152 0
按下鼠标右键的时候如何截图
|
iOS开发 MacOS Windows
使用 Tab 键快速切换对话框按钮 | 一日一技
使用 Tab 键快速切换对话框按钮 | 一日一技
496 0
|
容器
对话框和窗口的区别
“窗口”与“对话框”有什么区别?                       计算机类稿件的一大特点是文中的图很多。在这大量的图中,系统软件或应用软件的“界面”、“窗口”、“对话框”、“提示框”等的截图又占了很大的比例。
4615 0
Qt [GC9-7]:控制台基本设置及增加鼠标右键菜单和键盘事件
Qt [GC9-7]:控制台基本设置及增加鼠标右键菜单和键盘事件
356 0
Qt [GC9-7]:控制台基本设置及增加鼠标右键菜单和键盘事件
|
API
用VBS控制鼠标的实现代码(获取鼠标坐标、鼠标移动、鼠标单击、鼠标双击)
网上搜到的答案普遍是VBS无法实现,或者是要用第三方COM(ActiveX?)组件。我对第三方组件是很反感的,使用第三方组件毫无可移植性可言,因为别人的系统中不一定注册了这个组件。我的建议是,尽量不要在VBS代码中调用第三方组件,除非你的程序只是写来自己用。
2267 0
|
C#
c#实现任务栏添加控制按钮
原文:c#实现任务栏添加控制按钮 Windows7Taskbar的使用 你需要引入3个文件VistaBridgeLibrary.dll、Windows7.DesktopIntegration.dll、Windows7.
930 0