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

如何让静态控件响应鼠标消息,第1张

然后更改其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等上加减数字。

采用可视化界面添加的BUTTON按钮的话,一般来说双击该控件就可早拿以添加时间响应函数,如果双击不管用搭掘,还可以右键该控件选择 add event handler就会进入添加响应函数的编辑框,选择响应的消息响应函数。陆枝搭

一种方法,定义Cbutton派生类,添加BN_CLICKED响应函数局敏 ... 运行,还是编译后运行EXE,程序运行一段时间后不姿岩响应鼠标事迹腊御件,所有的单击事件和双击事件全都失效。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/bake/11988028.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存