在EDIT控件中,按动键盘上/下箭头键会增减EDIT中的数字。
请问,如何在CSpinButtonCtrl中截获键盘的上/下箭头键的消息?*查阅MSDN:提示需处理WM_KEYDOWN/WM_KEYUP,但是却没有任何消息流经此处。
(鼠标消息可截获即WM_LBUTTONDOWN/WM_LBUTTONUP)。
请问,如何在CSpinButtonCtrl中截获键盘的上/下箭头键的消息?*查阅MSDN:提示需处理WM_KEYDOWN/WM_KEYUP,但是却没有任何消息流经此处。
(鼠标消息可截获即WM_LBUTTONDOWN/WM_LBUTTONUP)。
解决方案 »
- TABCTRL 创建对话框出错
- 请问做EVC的大侠,怎么样控制界面的象素点
- 我怎么确定某个字符 char ch; 对应着键盘上的哪个键? ch 与 键的 VK_CODE之间怎么对应?
- 请问afxcoll.inl line:27是什么错误
- 关于进程监控,急!急!急!
- 等!高手指点!简单问题!
- 关于taskbar的问题:
- 那里有中文的MSDN下载?请给个连接 非常感谢
- 请问已经知一个SOCKET S 怎么样得到该SOCKET的端口?
- 提问:::如何去掉窗口中的scroll bar???
- 晕了!CSpinButtonCtrl微调的问题还没解决!!!100分在线给!!!
- 怎样使得双击标题栏不让窗口变小。
ON_NOTIFY(UDN_DELTAPOS, IDC_SPIN_BR_ALPHA, OnDeltaposMySpin)void CDlgTest::OnDeltaposMySpin(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_UPDOWN* pNMUpDown = (NM_UPDOWN*)pNMHDR; if(pNMUpDown->iDelta==1){//Up
//Your Code
}
else{//down
//Your
} *pResult = 0;
}
我已查了MSDN,里面说按压键盘的上下箭头会接到WM_KEYDOWN和WM_KEYUP消息。重载 CSpinButtonCtrl类,在重载类中指定了 WM_KEYDOWN 和 WM_KEYUP但是还是无法截获按压键盘上下箭头消息。
另:鼠标消息可截获(WM_LBUTTONDOWN, WM_LBUTTONUP)to Sinqi:
我没说明白,我想知道的是用户何时被按下/弹起箭头键
(我已指定了UDS_ARROW样式)高手们帮帮忙啊!!!!
我只是想在用户按下CSpinButtonCtrl控件后,键盘或鼠标左键弹起(WM_KEYUP)时更新一个视图。如果用户一直按着键盘或鼠标左键不动,一直更新视图会出现视图闪烁,同时浪费资源。所以,我只是想知道何时,用户按下上/下箭头时,键钮何时被弹起。当弹起时,我截获这段消息来更新相应的视图。唉。看来是无解了。
这里假设在左击时让其有焦点。
BOOL CYourDlg::PreTranslateMessage(MSG* pMsg) //父窗
{
if(pMsg->message == WM_KEYDOWN)
{
switch(pMsg->wParam)
{
case VK_UP:
return TRUE;
case VK_DOWN:
return TRUE;
}
}
return CDialog::PreTranslateMessage(pMsg);
}
void CMySpin::OnKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags)
{
if(nChar == VK_UP)
AfxMessageBox("VK_UP");
if(nChar == VK_DOWN)
AfxMessageBox("VK_DOWN"); CSpinButtonCtrl::OnKeyUp(nChar, nRepCnt, nFlags);
}void CMySpin::OnLButtonDown(UINT nFlags, CPoint point)
{
SetFocus();
CSpinButtonCtrl::OnLButtonDown(nFlags, point);
}
这样你先在它上面用鼠标左击后使用上下箭头就有效了。当然你也可以在其它情况让其有焦点。
那是因为对于对话窗等来说上下箭头键已被用来切换控件的焦点,直接return TRUE以防止它切换掉你的Spin的焦点。