void CXXWnd::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
{
switch (nChar)
{
case VK_PRIOR: // PAGEUP
...
break;
case VK_NEXT: // PAGEDOWN
...
break;
case VK_LEFT: // ←
...
break;
case VK_RIGHT: //→
...
break;
case VK_UP: //↑
...
break;
case VK_DOWN: //↓
...
break;
default:
...
break;
}
}
{
switch (nChar)
{
case VK_PRIOR: // PAGEUP
...
break;
case VK_NEXT: // PAGEDOWN
...
break;
case VK_LEFT: // ←
...
break;
case VK_RIGHT: //→
...
break;
case VK_UP: //↑
...
break;
case VK_DOWN: //↓
...
break;
default:
...
break;
}
}
解决方案 »
- 如何将用HOUGH变换提取出来的直线在原图像(彩色)中标记出来???
- UDP 服务器自己收到了自己发送的数据?
- 加载光标的方法?
- 紧急问题,请高手帮忙解决,谢谢!!!!
- COM未入门者,请各位老大,给个最简单的例子看看,学习一下!
- 如何让FormView上的控件在FormView大小改变时,根据对话框原有的相对位置,调整控件大小?
- 打印问题!?
- 请问win2000server可以支持多少的套接连接!~
- 如何扩展Windows的“Internet选项”中的内容?
- 编译中的/IGNORE:和/MERGE:都是什么意思啊?
- 加分加分!!!!!!!
- 为什么我的对话框应用程序中的工具条上的按纽只能触发ON_COMMAND事件,不能触发ON_UPDATE_COMMAND_UI 事件??(我的工具条是用代码生成的)
{
return DLGC_WANTARROWS;
}
那在在对话框中应该怎么样才可以用方向键来控制方向呢?
我就是象你这样做的,可是程序对下和右键根本就没有反应----收不到到OnKeyDown这个消息(同样左和上键就可以)
void CXXWnd::OnKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags)
{
switch (nChar)
{
case VK_RIGHT: //→
...
break;
case VK_DOWN: //↓
...
break;
default:
...
break;
}
}
UINT CXxx:OnGetDlgCode()
{
return DLGC_WANTARROWS;
}
但是我该如何加入该函数呢?
if(pMsg->message == WM_KEYDOWN)
{
switch(pMsg->wParam)
{
case VK_LEFT: //……
break;
case VK_DOWN://.....
break; }
}
CXxxx:OnKeyDown(...)
{
switch(nChar)
{
case VK_XXXX:
xxxxx
}
}就再你自己的控件中加这些代码就行了。
如果MFC不认识OnGetDlgCode的话,那么就自己处理WM_GETDLGCODE。
可参见MSDN...
上面的几位不要再讲啦,根本就得不到WM_KEYDOWN的消息的。
因为在基于Dlg的程序中,系统用SetWindowHook进行了Filter,根本就
发不到Dlg的窗口的。
只有将窗口的WM_GETDLGCODE设置位、为允许箭头才行。。我以前调查了很久才知道的。
你可以试一试SendMessage(hwnd, WM_GETDLGCODE,0,0)对于EDIT窗口和
BUTTON窗口的返回值有什么不同。
对于自己的倥件而言,用该方法应该是最好的。
想一想,如果该控件中有子控件时,是不是在PreTranslateMessage中需处理
if(pMsg->hwnd == m_hWnd)???
会有很多其他的限制吗?
为什么不用标准的做法呢?????给我一个理由,一定要有理由的。。