读书人

界面全屏有关问题搞晕了。总有个边框

发布时间: 2012-06-06 16:44:11 作者: rapoo

界面全屏问题,搞晕了。总有个边框
在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一个自定义消息来移除这些属性
[解决办法]
探讨
在Frame上建了个VIEW,总有个边框,我觉得是VIEW弄出来的框框。搞了好久也没搞定。
PreCreateWindow(CREATESTRUCT& cs);里面都该了Styl都没用。贴点代码出来。

Frame style的修改
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
if( !CFrameWndEx……

读书人网 >VC/MFC

热点推荐