在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);
}
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);
}
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 );
SDI mainframe的cs风格:
cs.style = WS_OVERLAPPED| WS_MINIMIZEBOX | WS_SYSMENU;
cs.dwExStyle &= ~WS_EX_CLIENTEDGE;view的cs风格:
cs.style &= ~WS_BORDER;
SDI mainframe的cs风格:
cs.style = WS_OVERLAPPED| WS_MINIMIZEBOX | WS_SYSMENU;
cs.dwExStyle &= ~WS_EX_CLIENTEDGE;view的cs风格:
cs.style &= ~WS_BORDER;
----------------------
这样改是不行的,我的代码里
cs.style = WS_POPUP;
cs.dwExStyle = 0;
都没用啊。
有些边框可能不是WS_EX_CLIENTEDGE造成的
而且WS_EX_CLIENTEDGE可能会在PreCreateWindow之后重新设置
如果确定是某些属性导致的
你可以在OnCreate中PostMessage一个自定义消息来移除这些属性
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
// CREATESTRUCT cs 来修改窗口类或样式
//风格的修改放到前面
cs.hMenu = ……;
cs.style = ……;
cs.dwExStyle = ……;if( !CFrameWndEx::PreCreateWindow(cs) )
return FALSE;
// TODO: 在此处通过修改
return TRUE;
}Changing the Styles of a Window Created by MFC