1. 用ClassWizard创建一个基于CButton的新类CWeixinBtn,然后利用ClassWizard增加类CWeixinBtn的成员和方法:
(1)在该类中增加成员: 一个指针CWeixinBtn *m_pBtn,必须是public,否则在类CTestDlg中访问不了.
(2)在该类中增加一个方法:OnMouseMove(),也就是增加一个鼠标移动到上面的消息响应函数
在该消息响应函数的实现代码中,隐藏自己,显示别人(m_Btn所指向的那个)
2. CTestDlg中:在将2个按钮(外观一样的)分别增加关联变量m_btn1,m_btn2,变量类型选择CWeixinBtn
(1)变量m_bt1属于CWeixinBtn类,自动会响应该类中的OnMouseMove
(2)变量m_bt1的任何响应,实际是其关联的按钮IDC_BUTTON1的响应.
(3) 在对话框创建完成后(其上的控件按钮也创建OK),它会发送WM_INITDIALOG消息,因此类CTestDlg中有该消息的响应函数OnInitDialog(),在该函数中交换地址,也就是说必须要等到按钮生成后才能获得其地址,也才能交换
m_btn1.m_pBtn = &m_btn2; //交换按钮的地址
m_btn2.m_pBtn = &m_btn1;
(1)在该类中增加成员: 一个指针CWeixinBtn *m_pBtn,必须是public,否则在类CTestDlg中访问不了.
(2)在该类中增加一个方法:OnMouseMove(),也就是增加一个鼠标移动到上面的消息响应函数
在该消息响应函数的实现代码中,隐藏自己,显示别人(m_Btn所指向的那个)
2. CTestDlg中:在将2个按钮(外观一样的)分别增加关联变量m_btn1,m_btn2,变量类型选择CWeixinBtn
(1)变量m_bt1属于CWeixinBtn类,自动会响应该类中的OnMouseMove
(2)变量m_bt1的任何响应,实际是其关联的按钮IDC_BUTTON1的响应.
(3) 在对话框创建完成后(其上的控件按钮也创建OK),它会发送WM_INITDIALOG消息,因此类CTestDlg中有该消息的响应函数OnInitDialog(),在该函数中交换地址,也就是说必须要等到按钮生成后才能获得其地址,也才能交换
m_btn1.m_pBtn = &m_btn2; //交换按钮的地址
m_btn2.m_pBtn = &m_btn1;
类WeixinBtn.cpp 的实现:
// WeixinBtn.cpp : implementation file
//#include "stdafx.h"
#in