【问题标题】:OnSize() Problem in VC++VC++ 中的 OnSize() 问题
【发布时间】: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;   
 } 
} 

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

【问题讨论】:

    标签: mfc visual-c++


    【解决方案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;
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-13
    • 1970-01-01
    • 2011-04-05
    • 1970-01-01
    • 2010-12-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多