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;
    }
  • 相关阅读:
    [BZOJ 1698] 荷叶池塘
    [BZOJ 3132] 上帝造题的七分钟
    [JLOI2011] 飞行路线
    [Codeforces Round49F] Session in BSU
    [BZOJ 3036] 绿豆蛙的归宿
    CRC-16校验原理
    ubuntu下mysql的安装与配置
    【OpenCV】边缘检测:Sobel、拉普拉斯算子
    我对sobel算子的理解
    梯度算子(普通的+Robert + sobel + Laplace)
  • 原文地址:https://www.cnblogs.com/duyy/p/3775011.html
Copyright © 2011-2022 走看看