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

phoenix3 2012-03-19 10:35:06
在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);
}
...全文
327 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
zgl7903 2012-04-15
  • 打赏
  • 举报
回复
[Quote=引用楼主 的回复:]
在Frame上建了个VIEW,总有个边框,我觉得是VIEW弄出来的框框。搞了好久也没搞定。
PreCreateWindow(CREATESTRUCT& cs);里面都该了Styl都没用。贴点代码出来。

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

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
向立天 2012-04-14
  • 打赏
  • 举报
回复
先用spy++看看有边框的窗口都有什么属性
有些边框可能不是WS_EX_CLIENTEDGE造成的
而且WS_EX_CLIENTEDGE可能会在PreCreateWindow之后重新设置
如果确定是某些属性导致的
你可以在OnCreate中PostMessage一个自定义消息来移除这些属性
phoenix3 2012-04-14
  • 打赏
  • 举报
回复
楼上的哥们能用代码说明下吗?
JKvigoss 2012-04-10
  • 打赏
  • 举报
回复
你在设置大小时候, 不要用CW_USEDEFULD 就可以了,自己设置数值改变大小..
phoenix3 2012-04-06
  • 打赏
  • 举报
回复
要改2个:
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;
都没用啊。
lgstudyvc 2012-03-22
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 schlafenhamster 的回复:]
要改2个:
SDI mainframe的cs风格:
cs.style = WS_OVERLAPPED| WS_MINIMIZEBOX | WS_SYSMENU;
cs.dwExStyle &= ~WS_EX_CLIENTEDGE;

view的cs风格:
cs.style &= ~WS_BORDER;
[/Quote]
一看就是过来人!
Ginie 2012-03-20
  • 打赏
  • 举报
回复
可以试试这个方法

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 );
gold_water 2012-03-20
  • 打赏
  • 举报
回复
没明白LZ说的什么问题,下面大侠知道的解释下呗。
schlafenhamster 2012-03-20
  • 打赏
  • 举报
回复
要改2个:
SDI mainframe的cs风格:
cs.style = WS_OVERLAPPED| WS_MINIMIZEBOX | WS_SYSMENU;
cs.dwExStyle &= ~WS_EX_CLIENTEDGE;

view的cs风格:
cs.style &= ~WS_BORDER;
phoenix3 2012-03-20
  • 打赏
  • 举报
回复
这段代码要加在哪里?

15,980

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧