关于WM_MOUSELEAVE的一个有关问题

关于WM_MOUSELEAVE的一个问题
我现在想实现这样一个功能:
开始有一个对话框,然后当鼠标移动到上面时创建另外一个对话框,当鼠标移开后面创建的这个对话框时候,destroy它,现在基本可以实现,方法如下:
响应:  
void   CMaxDlg::OnMouseMove(UINT   nFlags,   CPoint   point)  
{
//   TODO:   Add   your   message   handler   code   here   and/or   call   default
TRACKMOUSEEVENT       tme;      
tme.cbSize=sizeof(TRACKMOUSEEVENT);      
tme.dwFlags=/*TME_HOVER       |       */TME_LEAVE;      
tme.dwHoverTime=HOVER_DEFAULT;      
tme.hwndTrack=m_hWnd;      
if(!_TrackMouseEvent(&tme))      
AfxMessageBox( "Êó±êʼþ²¶×½Ê§°Ü£¡ ");  
CDialog::OnMouseMove(nFlags,   point);
}
LRESULT   CMaxDlg::OnMouseLeave(WPARAM   wParam,LPARAM   lParam)                  
{              
                  this-> DestroyWindow();
return   0;                  
}    
OnMouseLeave是我自定义的一个消息
afx_msg     LRESULT     OnMouseLeave(WPARAM   ,LPARAM);    
ON_MESSAGE(WM_MOUSELEAVE,OnMouseLeave)

但是如果对话框上有一个按钮的时候,当我们把鼠标移动到上面时,他也删除这个对话框,原因是     tme.hwndTrack=m_hWnd;   这里鼠标跟踪的就是对话框的句柄,那么问题是:
如何解决只有当鼠标离开这个框时,才删除对话框,而鼠标移动到某个控件上时候,不删除对话框呢?
兄弟们帮帮忙,不甚感激!          


------解决方案--------------------
可以在CMaxDlg::OnMouseLeave中得到鼠标和对话框的位置,来判断鼠标是否在对话框之外
------解决方案--------------------
获取对话框的客户区大小,然后判断鼠标是不是在这个区域内(PtInRect函数就可以判断)。注意处理坐标转换。