hur.cn - 华软网

 热门搜索

发送消息的快捷键失效问题!

  作者:未知    来源:网络    更新时间:2010/12/7
我的发送消息的快捷键的代码以下:
C++">
BOOL XXXX::PreTranslateMessage(MSG* pMsg)
{
try
{
if (pMsg->message == WM_KEYDOWN && pMsg->hwnd == m_wndREMessage.m_hWnd)
{
if (pMsg->wParam == VK_RETURN)
{
this->OnBnClickedButtonSend();
return TRUE;
}
}
if(pMsg->message == WM_KEYDOWN && pMsg->wParam == VK_ESCAPE)
{
return TRUE;
}
}
catch(...)
{}
return CDialog::PreTranslateMessage(pMsg);
}


然则会在运用进程中偶现快捷键失效的情况,需要手动点击发送按钮才能发送,发送按钮联系关系的响应函数也是this->OnBnClickedButtonSend();
请问哪位有遇到过类似情况?这类情况一般如何措置惩罚?
---华软 网友回答---
对话框失去焦点
---华软网友回复---
谢谢关注,可是我将光标定位到文本输入框后按快捷键,照旧没用,按ENTER键,直接换行了!这应该说明对话框的焦点在的啊
---华软网友回复---
那是由于快捷键被编辑框拦截了吧。
---华软网友回复---
你这个下个断点不就明白了
---华软网友回复---
引用 2 楼 tragicguy 的回复:
谢谢关注,可是我将光标定位到文本输入框后按快捷键,照旧没用,按ENTER键,直接换行了!这应该说明对话框的焦点在的啊

你有输入的话,焦点应该改变到控件了,这时按ENTER才会换行,应该是焦点为对话框
---华软网友回复---
去掉return TRUE?
---华软网友回复---
焦点应该是要在文本控件
m_wndREMessage.m_hWnd
这个成员变量也是指的这个CRichEdit控件
出现这类情况是偶现,非常低的可能性出现!

应该不是拦截吧,这类方式的快捷键不存留平安问题啊
---华软网友回复---
旧的代码就是没有return TRUE这一行,也会有失效的情况,所以才加上这一行的。

事实上这一行是应该加上的,由于这个键我要自己措置惩罚,措置惩罚完了,不应该再给系统的吧!
---华软网友回复---
由于是偶现,所以下断点调试的措实施不能呀!
---华软网友回复---
经过尝试发现,当窗口刚启用的时候,对于Enter键的截获措置惩罚也是不可功的,是否是此时窗口的消息行列还没有建立起来?
而我后续的快捷键失效的情况也是由于消息循环出问题致使?
有没有这类可能呢?
---华软网友回复---
学习下,我也陌生
---华软网友回复---
在特殊情况下pretranslatemessage不起作用,现在已经改成从CRichEditCtrl派生一个类,措置惩罚其WM_KEYDOWN来解决,谢谢列位关注!      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。