首先在主对话框初始化时调用
m_MyButton.SubclassDlgItem(IDOK,this);
m_MyButton.InitButton(this);
CMyButton中的函数
void CMyButton::InitButton(LPVOID pParma)
{
pwnd=(CWnd*)pParma;
}
void CMyButton::OnMouseMove(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
if(!m_changed) //m_changed为CMyButton 类对象bool型
{
this->GetWindowRect(m_rect); //m_rect为CMyButton 类对象CRect型
pwnd->ScreenToClient(m_rect); //pwnd为CMyButton 类对象CWnd型,通过参数与主对话框传递而来
m_oldrect=m_rect;
m_rect.top-=5;
m_rect.left-=5;
m_rect.bottom+=5;
m_rect.right+=5;
this->MoveWindow(m_rect);
m_rect=m_oldrect;
m_changed=true;
}
CButton::OnMouseMove(nFlags, point);
}
void CMyButton::MouseOut() //该函数在主对话框类的WM_MOUSEMOVE消息响应函数 中调用,负责恢复按钮大小
{
if(m_changed)
{
m_changed=false;
this->MoveWindow(m_rect);
}
}