MFC中存在两个坐标系,一个是屏幕坐标系,以显示器左上角为原点,另一个是窗口坐标系,以MFC包含边界的客户端的左上角为原点,我们在涉及MFC坐标操作时常常对获取的坐标是哪个坐标系下的坐标感到非常困扰,于是这篇博客将详细解析MFC中的各种坐标以及其转换关系,希望能有帮助。

我们先来分析一个鼠标点击事件的响应函数:

鼠标点击获取的坐标是客户区的坐标

  1. GetWindowRect获取的是窗口在屏幕坐标系下的坐标
  2. GetClientRect获取的是窗口在客户坐标系下坐标
  3. ScreenToClient将屏幕坐标系坐标转化为客户坐标系下坐标
  4. ClientToScreen将客户坐标系坐标转化为屏幕坐标系下坐标
  5. MoveWindow接受客户区坐标,来改变窗口或控件大小

对于窗口和空间可能由所不同,具体的,我们再来看几个例子:

固定窗口大小

点击按钮改变窗口大小

改变控件大小

 

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注