BOOL CDMSEdit::PreTranslateMessage( MSG* pMsg )
{
/**
* 编辑框快捷键操作
*/
if(pMsg-> message==WM_KEYDOWN )
{
if( ( GetKeyState( VK_CONTROL ) & 0xFF00 ) ==0xFF00 )
{
/**
* 全选
*/
if( pMsg-> wParam == 'A' || pMsg-> wParam == 'a')
{
this-> SetSel( 0, -1 );
...这一段是没有问题的,当ctrl键按下的时候,判断pMsg-> wParam 是不是等于 'A',没有问题
主要是想判断ctrl+c.ctrl+a之类的操作
但是,把检测放到WM_CHAR消息中的时候,
当按下ctrl+a,pMsg-> wParam的值是1
Ctrl+C,pMsg-> wParam值是3,我惶惑了
{
/**
* 编辑框快捷键操作
*/
if(pMsg-> message==WM_KEYDOWN )
{
if( ( GetKeyState( VK_CONTROL ) & 0xFF00 ) ==0xFF00 )
{
/**
* 全选
*/
if( pMsg-> wParam == 'A' || pMsg-> wParam == 'a')
{
this-> SetSel( 0, -1 );
...这一段是没有问题的,当ctrl键按下的时候,判断pMsg-> wParam 是不是等于 'A',没有问题
主要是想判断ctrl+c.ctrl+a之类的操作
但是,把检测放到WM_CHAR消息中的时候,
当按下ctrl+a,pMsg-> wParam的值是1
Ctrl+C,pMsg-> wParam值是3,我惶惑了
解决方案 »
- 进程隐藏!!!!!!!!!!!
- 如何能让listview去掉垂直滚动条并且支持滑动效果?
- 控件是怎样做出来的?
- 在vc下能否实现下面的东东?在线等!
- 请问如何修改CDialogBar,CStatusBar,CToolBar的背景?
- 如何提取文件的扩展名,如文件名为file1.f.exe,file2.f。其中前一个文件的扩展名为.exe,而后一个文件则没有扩展名,但是在程序中如何辨
- 我要做一个网址收集管理的共享软件,不知有没有商业前景?来者有分!!!
- 搞不懂的vc!
- 关于service程序是用怎么编写的,哪里有相关的例子!
- TcpServer和TcpClient
- 急!请帮忙!谢谢vc写的socket传文件,Debug版本提示"The operation timed out" Rel版本提示"指令引用的内存不能为read"
- 怎样得到标题栏的颜色
在wm_char中pMsg-> wParam是1
A对应的是1
B对应的是2
依此类推,那我也不想写
if (nChar==1 || nChar == 3)
这样,难道没给出宏/枚举之类的东西吗
但如果是 WM_KEYDOWN 的话,无论按 a 与 A ,wParam 都是 65
你可以用
if ( ( pMsg->wParam >= '0'
&& pMsg->wParam <= '9' )
|| ( pMsg->wParam >= VK_NUMPAD0
&& pMsg->wParam <= VK_NUMPAD9 )
|| ( pMsg->wParam == VK_RETURN ))
这种通过x<y<z的形式来简化下。
( GetKeyState( VK_CONTROL ) & 0xFF00 ) ==0xFF00
按control的话,的确是你说的那样看来要判断组合键就要用WM_KEYDOWN,而不是WM_CHAR才行.
WM_KEYDOWN里啥也没做
在WM_CHAR里做了一些事,但是为了禁止输入字符,所以,像这样
if(数字)
{
消息传递下去
}else
{
啥也别做
}
这样就造成了ctrl+c失效,为了解决这个问题,当然得判断ctrl+c了