如何在OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)中判断同时按下enter和ctrl键 不行的OnChar是字符而enter和ctrl键都不是在KeyDown中不成 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 只判断回车我到知道if( nChar == VK_RETURN )但是怎么判断同时按下ctrl? 有两个办法:1,GetKeyState(UINT key); 比如: if((nChar==VK_RETURN)&&GetKeyState(VK_CTRL)) //我不知道是否是VK_CTRL { }2,我认为最好的办法是 标志法( Flag)在OnKeyDown中 if(nChar==VK_CTRL) { bCtrlFlag=TRUE;} 在OnChar中 if((nChar==VK_RETURN)&&bCtrlFlag==TRUE){ .....}在OnKeyUp中 if(nChar==VK_CTRL){ bCtrlFlag=FALSE;}这个方法对多个键同时按下都适用,思想也简单 要判断你得到WM_CHAR时的状态用GetAsynKeyState() To: phoenix96_2000(Jack Of All Trades) 我是过了,这个方法不行!To: DoItFreely(Freely) GetAsynKeyState和GetKeyState也不能判断同时按下ctrl和enter.我想要的效果就像QQ聊天时那样,按住ctrl再按enter。当这两个键都同时被按下时,执行一定的操作! 注意:在调试状态下总是假!我需要Ctrl+A全部选定,就是在得到A的WM_KEYDOWN时取的,你试一下在OnKeyDown里处理 phoenix96_2000(Jack Of All Trades)的方法行不通是因为他有一个错误:响应Return 键按下的消息函数应该是OnKeyDown()而不是OnChar(),因为按下control 的同时按return 会使OnChar()中return的字符码改变,不再是vk_return所以应为:有两个办法:1,GetKeyState(UINT key);比如:OnKeyDown(){ if((nChar==VK_RETURN)&&GetKeyState(VK_CONTROL)<0) { }}2,我认为最好的办法是 标志法( Flag)把bCtrlFlag初值赋FALSE在OnKeyDown中 if(nChar==VK_CONTROL) { bCtrlFlag=TRUE;}在OnKeyDown中 if((nChar==VK_RETURN)&&bCtrlFlag==TRUE){ .....}在OnKeyUp中 if(nChar==VK_CONTROL){ bCtrlFlag=FALSE;}这个方法对多个键同时按下都适用,思想也简单 BYTE key[255];GetKeyboardState(key);if(key[VK_SHIFT]&128) //got Shift pressed ctrl+enter就是ANSI C控制符'\n',十六进制值0X0A 关于打开多个文件的问题(在线等) 被一个初级问题难到了。。。 当按下右上角的那个"X"关闭钮,程序调用了哪些函数?? 请问能使用VB开发多线程组件吗?(ActiveX dll) 摄像头采集到内存的图形是什么格式? SDI应用程序,如何禁用主菜单上的某个菜单项?? 请教各位大虾:在用vc设计如何区分操作的对象是文件还是目录。给个例子最好了:) 緊急求救!!解決即送分!! 请问各位:怎样才能把 CStatic控件的背景色设为透明? deltree命令如何递归删除所有子文件夹? 哎~c基础太差,高手们来帮我分析一下这段代码 太着急给分,结果不小心把铁子给封了,这里继续。。。
1,GetKeyState(UINT key);
比如:
if((nChar==VK_RETURN)&&GetKeyState(VK_CTRL)) //我不知道是否是VK_CTRL
{
}
2,我认为最好的办法是 标志法( Flag)在OnKeyDown中 if(nChar==VK_CTRL) { bCtrlFlag=TRUE;}
在OnChar中 if((nChar==VK_RETURN)&&bCtrlFlag==TRUE){ .....}
在OnKeyUp中 if(nChar==VK_CTRL){ bCtrlFlag=FALSE;}这个方法对多个键同时按下都适用,思想也简单
我想要的效果就像QQ聊天时那样,按住ctrl再按enter。当这两个键都同时被按下时,执行一定的操作!
我需要Ctrl+A全部选定,就是在得到A的WM_KEYDOWN时取的,你试一下在OnKeyDown里处理
所以应为:有两个办法:
1,GetKeyState(UINT key);
比如:
OnKeyDown()
{
if((nChar==VK_RETURN)&&GetKeyState(VK_CONTROL)<0)
{
}
}
2,我认为最好的办法是 标志法( Flag)
把bCtrlFlag初值赋FALSE
在OnKeyDown中 if(nChar==VK_CONTROL) { bCtrlFlag=TRUE;}
在OnKeyDown中 if((nChar==VK_RETURN)&&bCtrlFlag==TRUE){ .....}
在OnKeyUp中 if(nChar==VK_CONTROL){ bCtrlFlag=FALSE;}这个方法对多个键同时按下都适用,思想也简单
GetKeyboardState(key);
if(key[VK_SHIFT]&128)
//got Shift pressed