CDialog上有其他控件check后,CDialog就不能再接受键盘消息了,也就是说,CDialog的OnKeyDown事件都不起作用了。那么我在这个控件响应函数oncheck()中用HWND hWnd = AfxGetMainWnd()->m_hWnd;得到窗口句柄,然后用::SetFocus(hWnd);得到窗口焦点,但是调试结果OnkeyUp()缺没有效果?
请教why?
请教why?
解决方案 »
- 请教:关于COM组件中的辅助线程
- VC6.0 自动提示
- 主对话框中OnChar不响应
- 我的机器上为什么没有“iphlpapi.h”文件
- 哪有Xtreme CommandBars - ActiveX源代码下载?
- 基于Dialog的程序中,如何使用Timer事件
- 如何用最简便的方法检测一个HTTP代理服务器是否有效??另外如何知道HTTP代理是否支持SSL?
- 如何获得当前系统的正常状态和后台工作状态以及忙状态的鼠标的句柄?
- 在自己的程序中启动另一个程序???(50分)!!
- msflexgrid的长宽单位是什么
- 哪位高人帮我看一段程序,实在搞不懂了!!!!!!!!!!加了WSAAsyncSelect(s,this->m_hWnd,UM_SOCK,FD_CONNECT)就连不上,不加能连上,奇怪了
- 大家帮我解答一下有关连接mysql的疑问!(有代码,本地、远程测试已经成功,)
CDialog::PreTranslateMessage(MSG* pMsg)
{
if(pMsg->message==WM_KEYDOWN)
{
switch(pMsg->wParam)
{
case VK_LEFT:
MessageBox("你按了左方向键");
case VK_RETURN:
MessageBox("你按了回车键");
...//你的处理代码
...
}
}
.....
return CDialog::PreTranslateMessage(pMsg);
}
这是我的一段OnOK的重载,如果focus在哪一个CheCK或Button上时按回车时就作相应的操作!
void CV0Dlg::OnOK()
{
CWnd * currentwin=GetFocus();
if (currentwin==GetDlgItem(IDC_CHECK1))OnCheck1();
else if (currentwin==GetDlgItem(IDC_CHECK2))OnCheck2();
else if (currentwin==GetDlgItem(IDC_CHECK3))OnCheck3();
else if (currentwin==GetDlgItem(IDC_BUTTON1))OnButton1();
}