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

如何让静态控件响应鼠标消息,第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添加的消息

ON_BN_CLICKED(IDC_TEST,OnTest)

afx_msg void OnTest()

你这两项都加到该加的地方了?


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存