虚控件或非子窗口随所在窗口位置改变而改变位置
在日常软件中,常见有一种功能,存在某个tips窗口,或者某些虚控件,需要在其所在窗口移动或者大小改变时重新调整位置。目前本人想到的可能存在的几种情况:
- 虚控件
- 虚控件不是win32中的window,所以需要开发者自行控制
- 非子窗口
- tips窗口可能并不是所在窗口的子窗口(可能是拥有者关系而不是父子关系)
- 位置是根据屏幕位置进行更新,而不是根据所在窗口相对位置
因此需要在下列两种情况下重新调整位置:
- 位置改变
- 大小改变
对于继承MFC的CWnd窗口来说,可以分别使用下列两个窗口消息处理函数:
afx_msg void OnSize(UINT nType, int cx, int cy);
afx_msg void OnMove(int x, int y);
只要在上述两个函数中,加入重新调整虚控件(或者非子窗口的tips窗口)的位置或者大小的逻辑,就可以实现上述的效果了。