将最小化框添加到 MFC 属性表系统菜单

Posted

技术标签:

【中文标题】将最小化框添加到 MFC 属性表系统菜单【英文标题】:Adding Minimize box to MFC Property Sheet system menu 【发布时间】:2012-01-18 08:28:04 【问题描述】:

如何将最小化最大化框添加到CMFCPropertySheet的系统菜单中。 我尝试通过

修改样式
CMFCPropertySheet::ModifyStyle(NULL, WS_SYSMENU);

但什么也没发生。

【问题讨论】:

【参考方案1】:

假设您有一个派生自 CPropertySheet 的类,我们称之为 MySheet:

// Capture the WM_NCREATE message
BEGIN_MESSAGE_MAP(CMySheet, CPropertySheet)
  ON_WM_NCCREATE()
END_MESSAGE_MAP()

BOOL CMySheet::OnNcCreate(LPCREATESTRUCT lpCreateStruct)

  if (!CPropertySheet::OnNcCreate(lpCreateStruct))
    return FALSE;

  // Modify the window style
  LONG dwStyle = ::GetWindowLong(m_hWnd, GWL_STYLE);
  ::SetWindowLong(m_hWnd, GWL_STYLE, dwStyle | WS_WS_MINIMIZEBOX | WS_MAXIMIZEBOX);

  return TRUE;

请注意,您可以在 OnInitDialog 中执行此操作,但即使会显示最小化/最大化框,它们也不会执行任何操作。

【讨论】:

【参考方案2】:

在“OnInitDialog:”中这样做对我有用。

LONG dwStyle = ::GetWindowLong(m_hWnd, GWL_STYLE);
  ::SetWindowLong(m_hWnd, GWL_STYLE, dwStyle | WS_WS_MINIMIZEBOX | WS_MAXIMIZEBOX);

【讨论】:

以上是关于将最小化框添加到 MFC 属性表系统菜单的主要内容,如果未能解决你的问题,请参考以下文章

MFC添加图标到托盘

MFC CMFCToolBar 最小化恢复工具栏显示异常

winform最小化到托盘,托盘右击菜单显示

MFC RibbonBar - 以编程方式最小化?

MFC/VC 在多文档MDI程序中 子窗口初始最大化显示 如何去掉菜单栏右侧的最小化及向下还原按钮

WinForm 之 窗口最小化到托盘及右键图标显示菜单