MFC鼠标键盘消息处理
2014-06-07 17:38
357 查看
void CMainWindow::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags ){ if((nChar=='A')&&(GetKeyState( VK_SHIFT)<0)&&(GetKeyState(VK_LBUTTON))){ MessageBox(_T("shift+A+鼠标左键被按下了")); } if(GetKeyState(VK_NUMLOCK)&0x01){/* 若高序位为1,则键处于DOWN状态,否则为UP状态。 若低序位为1,则键被触发。若低序位置为0,则键被关闭,且不被触发。触发键在键盘上的指示灯,当键被触发时即亮,键不被触发时即灭。 */ MessageBox(_T("NumLock被按下了")); } }
void CMainWindow::OnChar(UINT nChar,UINT nRepCnt,UINT nFlags){ CString s; if((nChar>=_T('A'))&&(nChar<=_T('Z'))||(nChar>=_T('a'))&&(nChar<=_T('z'))){ s.Format(_T("你按下了:%c"),nChar); MessageBox(s); } }
判断是否在图形内部的两种方法:
方法一:PtInRect
void CMainWindow::OnLButtonDown(UINT nFlags,CPoint point) { CRect rc(100,100,200,200); if(rc.PtInRect(point)){ MessageBox(_T("内部"),NULL); }else { MessageBox(_T("外部"),NULL); } }
方法二:判断像素颜色(最好用黑白两色,其他颜色可能是抖动色,不准确)
void CMainWindow::OnLButtonDown(UINT nFlags,CPoint point) { CClientDC dc(this); if(dc.GetPixel(point)==RGB(0,0,0)){ MessageBox(_T("内部"),_T("a"),MB_ABORTRETRYIGNORE); } }
处理光标:
void CMainWindow::OnLButtonDown(UINT nFlags,CPoint point) { TEXTMETRIC tm; CClientDC dc(this); dc.GetTextMetrics(&tm); CreateSolidCaret(4,tm.tmHeight);//光标的宽和高 CSize size=dc.GetTextExtent(_T("aaaaaaaaa",8));//光标处于当前鼠标位置之后8个字符的位置 SetCaretPos(CPoint(point.x+size.cx,point.y)); ShowCaret();//默认是隐藏的 m_ptCaret=point; }
相关文章推荐
- 折腾MFC无爱~看看OpenCV自带的鼠标、键盘消息处理机制。
- 去掉在模态对话框处理鼠标跟键盘消息时,出现系统提示声音
- MFC中鼠标消息的处理--WM_LBUTTONDWON,WM_RBUTTONDWON
- MFC——12.话框中对键盘消息的响应处理&&如何响应wm_char消息
- 处理键盘鼠标消息编程
- DXUT 学习笔记(3)对键盘鼠标的响应 及 消息处理
- MFC对键盘消息的处理
- mfc窗口位置设置,隐藏功能,给其他程序发送虚拟鼠标键盘消息
- MFC消息处理时,双击鼠标左键响应单击左键消息的处理
- WINCE的MFC中处理鼠标滚轮消息
- MFC学习笔记二 处理键盘消息
- MFC中键盘消息处理WM_KEYDOWN,WM_KEYUP
- mfc 关于不响应键盘消息的处理
- TControl的消息覆盖函数大全(15个WM_函数和17个CM_函数,它的WndProc就处理鼠标与键盘消息)
- TWinControl的消息覆盖函数大全(41个WM_函数和31个CM_函数,它的WndProc就处理鼠标(转发)、键盘(取消拖动)、焦点、和WM_NCHITTEST一共4类消息)
- MFC中键盘,鼠标等有用的消息函数。
- duilib鼠标键盘消息处理
- [MFC]鼠标消息处理
- MFC处理鼠标消息-小例子
- 处理键盘和鼠标响应消息