控件给主窗口发送消息-直接调用onmousemove
class CTitleButton : public CBCGPButton { DECLARE_DYNAMIC(CTitleButton) public: CTitleButton(); virtual ~CTitleButton(); protected: DECLARE_MESSAGE_MAP() public: afx_msg void OnMouseMove(UINT nFlags, CPoint point); };
IMPLEMENT_DYNAMIC(CTitleButton, CBCGPButton) CTitleButton::CTitleButton() : CBCGPButton() { } CTitleButton::~CTitleButton() { } BEGIN_MESSAGE_MAP(CTitleButton, CBCGPButton) ON_WM_MOUSEMOVE() END_MESSAGE_MAP() void CTitleButton::OnMouseMove(UINT nFlags, CPoint point) { CWnd* pParent = GetParent(); if (pParent) { pParent->SendMessage(WM_MOUSEMOVE, nFlags, MAKELPARAM(point.x, point.y)); } CBCGPButton::OnMouseMove(nFlags, point); }
主窗口中的OnMouseMove如下调用:
void CDlgMain::OnMouseMove(UINT nFlags, CPoint point) { static CPoint PrePoint = CPoint(0, 0); if(MK_LBUTTON == nFlags) { if(point != PrePoint) { ***** CPoint ptTemp = point - PrePoint; GetMainWnd()->GetWindowRect(&rcWindow); ****** rcWindow.OffsetRect(ptTemp.x + ioff, ptTemp.y); GetMainWnd()->MoveWindow(&rcWindow); } } }