我一直在四处寻找,但我找不到任何可行的解决方案。
我试图使用所有这些但没有成功:
GetMDIFrame()->ModifyStyle(WS_CAPTION, 0);
GetMDIFrame()->ModifyStyle(WS_CAPTION, 0, SWP_DRAWFRAME|SWP_FRAMECHANGED);
SetWindowLong(hwnd, GWL_STYLE, ::GetWindowLong(hwnd, GWL_STYLE) & ~(WS_BORDER | WS_DLGFRAME | WS_THICKFRAME));
SetWindowLong(hwnd, GWL_EXSTYLE, ::GetWindowLong(hwnd, GWL_EXSTYLE) & ~WS_EX_DLGMODALFRAME)
有谁知道如何摆脱MDI框架的标题栏?没有文字或栏(这包括没有最小化,最大化和关闭按钮),只有一个厚边框才能调整大小。
我也碰巧使用BCG色带,显然会对它的呈现方式产生影响。
答案 0 :(得分:1)
我的回答仅在您使用MFC功能区栏实施或BCG实施时才有效。 样式标志不影响色带条实现的主要原因是色带条绘制了自己的NC区域。实际上没有“窗口标题”。
您需要在bReplaceFrameCaption设置为FALSE的情况下初始化CMFCRibbonBar。
CMainFrame::CMainFrame()
: m_wndRibbonBar(FALSE)
{
覆盖CMainFrame:PreCreateWindow并设置所需的样式。
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
if( !CBCGPMDIFrameWnd::PreCreateWindow(cs) )
return FALSE;
cs.style = WS_POPUPWINDOW;
return TRUE;
}
这会产生您想要的效果
答案 1 :(得分:0)
void CChildFrame::OnSysCommand(UINT nID, LPARAM lParam)
{
// TODO: Add your message handler code here and/or call default
CMDIChildWnd::OnSysCommand(nID, lParam);
CMDIFrameWnd* pFrame = GetMDIFrame();
pFrame->SetWindowTextW(_T(""));
pFrame->ModifyStyle(WS_MAXIMIZEBOX, 0);
pFrame->ModifyStyle(WS_MINIMIZEBOX, 0);
pFrame->ModifyStyle(WS_SYSMENU, 0);
}
结果是......