Dialog是不是不能响应WM_KEYDOWN和WM_CHAR消息呀?
解决方案 »
- 为什么使用UNICODE字符集的时候,弹不出TOOLTIPS?(C++ WIN32 API)
- 请问有办法在VC中根据命令行窗口的提示依次输入多条命令吗?
- 极其难看的颜色
- 组合变量的名字
- 请问用ado执行insert、update等操作,怎么知道是否成功?
- 帮忙解释简单的语句!解答马上给分
- 这个错搞了我2小时了,请帮忙
- 如何在开机时自动将某个图片设置为桌面?(过几天就是4月1号了,准备做一个这样的小程序:-))还望哪位兄台能指点..
- 问一个有关自定义的类的内存分配和释放的问题,疑惑不解啊。
- 请高手解决
- CEdit 小问题!!怎样判断编辑框里的值和上一次编辑框里的值不同.在线结贴!!!
- 学习com问题--进程外组件(本地服务器)
BOOL CxxxDlg;:PreTranslateMessage(MSG *pMsg)
{
if(pMsg->message == WM_KEYDOWN)
{
...
}
else if(pMsg->message == WM_CHAR)
{
...
}
return CDialog::PreTranslateMessage(pMsg);
}
回答:当然不是
flyelf(空谷清音) 说的很正确!
需要通过PreTranslateMessage来得到这两个消息
BOOL CxxxDlg;:PreTranslateMessage(MSG *pMsg)
{
if(pMsg->message == WM_KEYDOWN)
{
...
}
else if(pMsg->message == WM_CHAR)
{
...
}
return CDialog::PreTranslateMessage(pMsg);
}祝你郝云!
2.为什么Dialog和正常的CWnd不一样呢,不能通过afx_msg方式而要用PreTranslateMessage方式呢?
3.为什么我用WindowProc方式截获不到WM_KEYDOWN消息呢?
LRESULT CTestDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
if((WM_KEYDOWN== message) )
{
TRACE("keydown!\n");
}
return CDialog::WindowProc(message, wParam, lParam);
}
LRESULT CTestDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
if((WM_KEYDOWN== message) )
{
TRACE("keydown!\n");
}
return CDialog::WindowProc(message, wParam, lParam);
}
你说的可能有道理!