界面全屏问题,搞晕了。总有个边框
在Frame上建了个VIEW,总有个边框,我觉得是VIEW弄出来的框框。搞了好久也没搞定。
PreCreateWindow(CREATESTRUCT& cs);里面都该了Styl都没用。贴点代码出来。
Frame style的修改
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
if( !CFrameWndEx::PreCreateWindow(cs) )
return FALSE;
// TODO: 在此处通过修改
// CREATESTRUCT cs 来修改窗口类或样式
cs.hMenu = NULL;
cs.style = WS_POPUP;
cs.dwExStyle = 0;
return TRUE;
}
VIEW style的修改
BOOL CParentView::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: Add your specialized code here and/or call the base class WS_EX_CLIENTEDGE WS_EX_WINDOWEDGE
cs.style &= ~WS_BORDER;//这里设置成0,都没用
cs.dwExStyle &= ~WS_EX_CLIENTEDGE;//这里执行了 cs.dwExStyle == 0
cs.dwExStyle &= ~WS_EX_WINDOWEDGE;
return CView::PreCreateWindow(cs);
}
[解决办法]
可以试试这个方法
- C/C++ code
ModifyStyle(WS_CAPTION,0,0); int x = GetSystemMetrics(SM_CXSCREEN); //获取屏幕X像素 int y = GetSystemMetrics(SM_CYSCREEN); //获取屏幕Y像素 RECT rectDesktop; WINDOWPLACEMENT wpNew; WINDOWPLACEMENT m_wpPrev; GetWindowPlacement(&m_wpPrev); ::GetWindowRect(::GetDesktopWindow(),&rectDesktop); ::AdjustWindowRectEx(&rectDesktop, GetStyle(), FALSE, GetExStyle()); wpNew = m_wpPrev; wpNew.showCmd = SW_SHOWNORMAL; wpNew.rcNormalPosition = rectDesktop; SetWindowPlacement ( &wpNew );
[解决办法]
要改2个:
SDI mainframe的cs风格:
cs.style = WS_OVERLAPPED| WS_MINIMIZEBOX | WS_SYSMENU;
cs.dwExStyle &= ~WS_EX_CLIENTEDGE;
view的cs风格:
cs.style &= ~WS_BORDER;
[解决办法]
你在设置大小时候, 不要用CW_USEDEFULD 就可以了,自己设置数值改变大小..
[解决办法]
先用spy++看看有边框的窗口都有什么属性
有些边框可能不是WS_EX_CLIENTEDGE造成的
而且WS_EX_CLIENTEDGE可能会在PreCreateWindow之后重新设置
如果确定是某些属性导致的
你可以在OnCreate中PostMessage一个自定义消息来移除这些属性
[解决办法]