在屏幕上拖拽移动窗口的时候,按ESC,有办法处理这个事件么? 因为我弄了两个窗口,拖拽的时候两个窗口一起动,另一个窗口是在OnMoving的时候调用movewindow来实现的。按ESC键会导致窗口退回原位置,那另一个窗口就不知道这个动作,就停在最后移动的位置上了。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 处理按ESC事件应该就可以了吗? 处理按ESC事件 将另一个窗口移动到你想要的位置 呃,都说了我拿不到ESC消息。在PreTranslateMsg和WindowProc中都拿不到Keydown消息。 那是系统控制的吧,这事情根本不发生在exe的客户区。 WM_Keydown是拿不到系统按键的信息的这个msdn上有 那么各位,有什么好办法处理这个情况吗?用键盘hook也不靠谱,比如说在拖动的时候按windows键,也会有一样的效果。或者说拖动窗口的时候,系统弹出一个对话框导致失去了焦点,也是这样的情况。 我能想象的得到的就是hook 键盘钩子 没用的,首先windows下可能有多种组合键可以让拖拽提前终止,比如说ESC,Win,Alt+Tab,Alt+ESC。另外如果在移动过程中windows弹出一个错误对话框或者什么的,也会终止拖拽,防不胜防。 把移动写在Move里面 就可以实现了 这两个窗口不是父子关系的。是两个独立的窗口。我现在是在OnMoving的时候使用MoveWindow去移动另一个窗口。 一样 别在OnMoving里面处理 在OnMove里面处理就行了 还有你为什么截获不到ESC消息 是不是你的处理错了BOOL PreTranslateMessage(MSG* pMsg){ if (pMsg-> message == WM_KEYDOWN) {//截获ESC消息 int nVirtKey = (int)pMsg-> wParam; if (nVirtKey == VK_ESCAPE) {//你的处理 } } return CDialog::PreTranslateMessage(pMsg);} 解决就好 我觉得ESC也能截获 但相比还是OnMove比较好 QueueUserWorkItem启动线程池,当线程池内线程没有执行完,这时关闭程序,会出现内存泄露,如何解决? 我想把一个网站的验证码文件保存下来,能发给我一份代码吗 windows程序设计 怎样把多个文档序列化到一个文件 百度贴吧大漏洞 初学者问CClientDC的用法 请教上海软件设计师(高程)报名信息 在那里能下載最新的Win32 SDK,微軟網站好像不行!祇能讓你安裝.還裝不上. 一个程序里面可不可以同时有流式和报式socket和外界同时进行通信? WAVEFORMATEX与WAV文件的问题 有关ListCtrl控件 Win CE5.0使用何种数据库比较好呢?
这个msdn上有
我现在是在OnMoving的时候使用MoveWindow去移动另一个窗口。
{
if (pMsg-> message == WM_KEYDOWN)
{//截获ESC消息
int nVirtKey = (int)pMsg-> wParam;
if (nVirtKey == VK_ESCAPE)
{//你的处理
}
} return CDialog::PreTranslateMessage(pMsg);
}
解决就好 我觉得ESC也能截获
但相比还是OnMove比较好