MFC学习日记十一:Mfc基于对话框编程之逃跑按钮(第八课)

8: 

在一个基于对话框的应用程序,没有从CWnd派生出来的View的视类,也没有从CFrameWnd派生出来的框架类,只有从CDialog派生出来的对话窗类。

逃跑按钮:

想法:

可以设计两个按钮,隐藏其中一个,当鼠标放在显示的按钮上的时候,隐藏这个按钮,并且显示那个另一个按钮,相应的鼠标放在另一个上的时候隐藏它显示当前被隐藏的。

1、在资源编辑器中新建两个按钮,把其中一个的属性->【可见】勾选去掉(让其隐藏)。

2、由于这里我们需要响应鼠标移动的消息WM_MOUSEMOVE,我们新建的是一个基于对话框应用程序,那么这里只有我们把鼠标移动到按钮上的时候才需要去调用它对应的响应函数。为了实现上述想法,首先我们新建一个基于CButton的类CWangDongBtn,将之前新建的两个按钮与这个类关联起来。然后右击其中一个按钮-》建立类向导 在Member Variables中选择CTestDlg类,把两个按钮都关联一个CWangDongBtn的变量(m_btn1,m_btn2)。关联时会提醒你去加入一个CWangDongBtn类的头文件,因为这时我们是在CTestDlg类中新建CWangDongBtn对象,所以要加入它的头文件。确定后去添加即可。

3、为了实现鼠标逃跑,这里需要在CWangDongBtn中添加一个WM_MOUSEMOVE的响应函数OnMouseMove()

4、这里又发现,当鼠标放在那个显示的按钮之上的时候,是可以调用ShowWindow(SW_HIDE);让它隐藏的,但是怎么去调用另一个按钮让它显示呢;这里可以在CWangDongBtn类中新建一个CWangDongBtn的指针变量m_pBtn,这样每一个CWangDongBtn对象都有这样一个数据成员,当然之前新建的与两个按钮相关的m_btn1m_btn2也有这个成员变量,这时可以把m_btn1的数据成员m_pBtn的值赋以另一个按钮m_btn2的首地址,相对应的把另一个m_btn2的数据成员m_pBtn的值也赋以m_btn1的首地址,这里两个赋值是在CTestDlgOnInitDialog中完成的。这样当鼠标放在显示的按钮上的时候,调用鼠标移动的响应函数,就可以用当前显示的按钮调用到隐藏的按钮,让它显示。

OnInitDialog()是用来响应WM_INITDIALOG消息的,这个消息是在对话框显示之前发送的。

void CWangDongBtn::OnMouseMove(UINT nFlags, CPoint point) 
{
// TODO: Add your message handler code here and/or call default
ShowWindow(SW_HIDE);	 //让当前鼠标位置的按钮隐藏
m_pBtn->ShowWindow(SW_SHOW);	//让另一个按钮显示出来
CButton::OnMouseMove(nFlags, point);
}

MFC学习日记十一:Mfc基于对话框编程之逃跑按钮(第八课)_第1张图片

你可能感兴趣的:(MFC学习日记十一:Mfc基于对话框编程之逃跑按钮(第八课))