最后就能添加事件了
有两种方法:一是直接添加控件的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()
你这两项都加到该加的地方了?
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)