zoukankan      html  css  js  c++  java
  • MFC鼠标键盘消息处理

    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;
    }
  • 相关阅读:
    java安全——BASE64
    Spring Aop 梳理
    Spring Aop中,获取被代理类的工具
    关于eclipse运行TestNG出现: CreateProcess error=206, ÎļþÃû»ò)չÃû的解决办法
    java内存设置
    用python开发调试器——起始篇
    5分钟破解全峰快递
    重拾黑客
    ThreadPoolExecutor的运转机制
    20190627_解决ADB的device offline问题的两种方法
  • 原文地址:https://www.cnblogs.com/duyy/p/3775011.html
Copyright © 2011-2022 走看看