步骤:
(1)创建基于对话框的单文档应用程序,在对话框上新建一个按钮。
(2)为按钮添加一个以CButton的父类的CTestBtn类,并为CTestBtn添加WM_MOUSEMOVE消息处理函数,用来接收当鼠标滑过Button的消息。
(3)在WM_MOUSEMOVE的消息处理函数中,用GetWindowRect来得到Button的当前位置的信息。
(4)由于GetWindowRect返回的是屏幕坐标,所以用ScreenToClient将坐标转化到客户区坐标。然后在调用SetWindowPos或者MoveWindow将按钮设置到新的位置。
BOOL SetWindowPos ( const CWnd* pWndInsertAfter, int x, int y, int cx, int cy, UINT nFlags );
void GetWindowRect( LPRECT lpRect ) const;
void MoveWindow ( int x, int y, int nWidth, int nHeight, BOOL bRepaint = TRUE );
总结:目前没有制作成功,原因也没有查到,能了解到的是在属于对话框的控件能通过GetParent()来得到对话框的指针,从而来实现对对话框的访问。
如果,各位发现了我在制作过程中有什么地方不对,请大家指出,小弟不胜感激。
(1)创建基于对话框的单文档应用程序,在对话框上新建一个按钮。
(2)为按钮添加一个以CButton的父类的CTestBtn类,并为CTestBtn添加WM_MOUSEMOVE消息处理函数,用来接收当鼠标滑过Button的消息。
(3)在WM_MOUSEMOVE的消息处理函数中,用GetWindowRect来得到Button的当前位置的信息。
(4)由于GetWindowRect返回的是屏幕坐标,所以用ScreenToClient将坐标转化到客户区坐标。然后在调用SetWindowPos或者MoveWindow将按钮设置到新的位置。
BOOL SetWindowPos ( const CWnd* pWndInsertAfter, int x, int y, int cx, int cy, UINT nFlags );
void GetWindowRect( LPRECT lpRect ) const;
void MoveWindow ( int x, int y, int nWidth, int nHeight, BOOL bRepaint = TRUE );
总结:目前没有制作成功,原因也没有查到,能了解到的是在属于对话框的控件能通过GetParent()来得到对话框的指针,从而来实现对对话框的访问。
如果,各位发现了我在制作过程中有什么地方不对,请大家指出,小弟不胜感激。