VC++ 中的 OnSize() 问题

Posted

技术标签:

【中文标题】VC++ 中的 OnSize() 问题【英文标题】:OnSize() Problem in VC++ 【发布时间】:2010-03-18 10:05:44 【问题描述】:

在我的 VC++ MFC 应用程序中,我有不同的视图。在每个视图中,当我最大化它时,我将大小和位置更改为新事物(通常它会完全混合到屏幕大小)。但我不想要。所以在 OnSize() 我这样编码。

void CChildFrame::OnSize(UINT nType, int cx, int cy)

 CMDIChildWnd::OnSize(nType, cx, cy);

 int XBorder = GetSystemMetrics(SM_CXMAXIMIZED);
 int YBorder = GetSystemMetrics(SM_CYMAXIMIZED); 
 switch (nType) 
     
        case SIZE_MAXIMIZED: 
 SetWindowPos(NULL,0,60,XBorder-45,YBorder-60,SWP_NOZORDER );
   break;   
  
 

但是发生了什么?当我最大化视图时,它只会最大化到上面提到的大小。但是在那个蓝色条中,没有最小化、最大化、关闭按钮。 当我双击蓝色条时,它会使用所有按钮恢复到上一个​​位置。 我怎样才能得到它?

【问题讨论】:

【参考方案1】:

我不明白什么是“蓝条”,但您可能可以查看以下方向:修改窗口样式(参见 WS_MAXIMIZE、WS_MAXIMIZEBOX、...);覆盖 OnGetMinMaxInfo 而不是 OnSize。

【讨论】:

蓝条是带有系统菜单和标题的系统框架。我使用 OnGetMinMaxInfo()。但它只将 X,Y 位置设为 0,0。但我想要 X=0,Y=60。这是我的 OnGetMinMaxInfo() lpMMI->ptMaxTrackSize.x = XBorder-100; lpMMI->ptMaxTrackSize.y = YBorder-100;

以上是关于VC++ 中的 OnSize() 问题的主要内容,如果未能解决你的问题,请参考以下文章

C++ MFC - 在 CDialog::OnSize 事件 (GetWindowRect) 上没有引发运行时错误的代码执行失败

VC++中, 在鼠标已经按住窗口边缘, 要拖拽调整窗口大小的时候, 会发送啥消息?

在 MFC 中处理 OnSize 函数或可调整大小的对话框

onsize

vc6和vc7中的CString有啥区别?

OpenCV 中的 vc10、vc11 和 vc12 库有啥区别?