如何让静态控件响应鼠标消息

iljohlsx
2013-10-12 · TA获得超过4021个赞
知道小有建树答主
回答量:920
采纳率:0%
帮助的人:1718万
展开全部
然后更改其NOTIFY属性 最后就能添加事件了 有两种方法:一是直接添加控件的BN_CLICKED或BN_DOUBLECLICKED消息响应函数,或重载PreTranslateMessage函数,在函数内部判断消息类型及位置。 你没有作我说的“作一个这个控件的类,加上ON_WM_MOUSEMOVE的message handler就可以了,”步骤如下: 1。载左面class view 下选择add class--MFC class. 例如class name 叫CTest, base class选CStatic 2。右击新生成的class,选add message handler,选ON_WM_MOUSEMOVE.在其中加你想添加的程序。 3。将你的CSTatic 控件的ID改成任何不叫IDC_STTAIC的名字。 4。在class wizard里给你的CStatic控件加variable,选control variable,类用你刚生成的CTest。 以下方法可用,但是控件不能响应鼠标点击消息和移动消息,只响应滚轮消息: 原理:通过确定鼠标位置,当鼠标位于静态控件区域内,执行鼠标响应函数 为一个静态控件Static响应鼠标事件的方法: 1.定义一个坐标变量 RECT m_pRectLink_Static; 2.在OnInitDialog()中添加如下代码: //将静态主菜单的屏幕坐标存放在m_pRectLink_ ...中 GetDlgItem(IDC_STATIC - GetWindowRect(&m_pRectLink_Static); //将屏幕坐标转换为客户坐标 ScreenToClient(&m_pRectLink_Static); 3.利用类向导,添加鼠标响应消息,如WM_LBUTTONDOWN,编辑函数如下: void CRosePojieDlg::OnLButtonDown(UINT nFlags, CPoint point){//判断鼠标是否落在静态控件的矩形区域内 if (point.x(m_pRectLink_Static.left) && point.x<(m_pRectLink_Static.right)&& point.y(m_pRectLink_Static.top) && point.y<(m_pRectLink_Static.bottom)){AfxMessageBox("你按下了鼠标"); //要执行的语句}}如果想缩小或扩大选区,只需在m_pRectLink_Static.left等上加减数字。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式