虚控件或非子窗口随所在窗口位置改变而改变位置

在日常软件中,常见有一种功能,存在某个tips窗口,或者某些虚控件,需要在其所在窗口移动或者大小改变时重新调整位置。目前本人想到的可能存在的几种情况:

  1. 虚控件
    • 虚控件不是win32中的window,所以需要开发者自行控制
  2. 非子窗口
    • tips窗口可能并不是所在窗口的子窗口(可能是拥有者关系而不是父子关系)
  3. 位置是根据屏幕位置进行更新,而不是根据所在窗口相对位置

因此需要在下列两种情况下重新调整位置:

  1. 位置改变
  2. 大小改变

对于继承MFC的CWnd窗口来说,可以分别使用下列两个窗口消息处理函数:

  1. afx_msg void OnSize(UINT nType, int cx, int cy);
  2. afx_msg void OnMove(int x, int y);

只要在上述两个函数中,加入重新调整虚控件(或者非子窗口的tips窗口)的位置或者大小的逻辑,就可以实现上述的效果了。

原文地址:https://www.cnblogs.com/HelloGreen/p/11522749.html