我需要从MFC对话框的标题栏中删除系统菜单和图标,同时保持最大化,最小化和关闭按钮。
我尝试过使用SetIcon(NULL,TRUE),SetIcon(NULL,FALSE),希望这会删除图标。但是,这不起作用。图标仍然显示有点凌乱,我认为应用程序只是采用主框架图标并调整大小。
任何人都可以帮我解决这个问题..我正在使用VC ++ 2010 SP1
由于
答案 0 :(得分:6)
标题栏图标也可以通过使用扩展样式(仅在对话框上测试,不知道它在Windows上的行为方式)从min / max / exit按钮独立删除。
将以下代码粘贴到对话框的OnInitDialog()
方法中,它应该有效:
// Disable default titlebar icon
int extendedStyle = GetWindowLong(m_hWnd, GWL_EXSTYLE);
SetWindowLong(m_hWnd, GWL_EXSTYLE, extendedStyle | WS_EX_DLGMODALFRAME);
// Update non-client area of the dialog, for the changes to take effect
SetWindowPos(NULL, 0, 0, 0, 0, SWP_FRAMECHANGED | SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER);
我也尝试了SetIcon()
方法和许多其他提议的解决方案/黑客,但是上层(即扩展样式)没有成功。
修改强>
我刚刚发现了一个比上面代码更简单的东西:
只需将DS_MODALFRAME
添加到对话框样式,以及WS_CAPTION
和WS_SYSMENU
。
答案 1 :(得分:1)
在资源编辑器中,编辑对话框的属性:将“系统菜单”设置为false。这将删除对话框的WS_SYSMENU windows style。
编辑:哎呀!我只是重新阅读你的问题并意识到你想保留最小和最大的盒子。我的解决方案不会这样做。这是一个不寻常的要求。