读书人

用CFrameWnd:Create创建一个没有标题栏

发布时间: 2012-09-27 11:11:17 作者: rapoo

用CFrameWnd::Create创建一个没有标题栏的窗口,窗口样式怎么弄
DWORD dwSytle = WS_VISIBLE ;
Create(0,0, dwSytle);

我这个不好使啊,还是有标题栏,但是没了左上角的图标,也没了右上角的三个按钮
边框也要去掉

[解决办法]
很可能是CFrameWnd自动加上了标题栏吧.
你可以创建之后再修改,去掉某些不要的样式.
ModifyStyle(WS_CAPTION);

CWnd::ModifyStyle
BOOL ModifyStyle( DWORD dwRemove, DWORD dwAdd, UINT nFlags = 0 );

返回值:如果成功地修改了风格,则返回非零值;否则返回0。

参数:
dwRemove 指定了在修改风格时要清除的窗口风格。
dwAdd 指定了在修改风格时要加入的窗口风格。
nFlags 要传递给SetWindowPos的标志,如果不应调用SetWinowPos,则为0。缺省值为0。预设的标志列表参见说明部分。

说明:
调用这个成员函数以修改窗口的风格。要加入或清除的风格可以用位或操作符(|)来组合。有关可用窗口风格的信息参见《Win32 SDK程序员参考》中的“通用窗口风格”主题和::CreateWindow。
如果nFlags为非零值,则ModifyStyle调用Windows 的API函数::SetWindowPos,并将nFLags与下面的四个预定义值组合,以重画窗口:
· SWP_NOSIZE 保持当前大小。
· SWP_NOMOVE 保持当前位置。
· SWP_NOZORDER 保持当前的Z轴顺序。
· SWP_NOACTIVATE 不激活窗口。要修改窗口的扩展风格,参见ModifyStyleEx。








[解决办法]

C/C++ code
CFrameWnd* pFrame = new CFrameWnd;    pFrame->Create(NULL, _T("Frame"));    pFrame->ModifyStyle(WS_CAPTION, 0);    pFrame->ModifyStyleEx(WS_EX_CLIENTEDGE | WS_EX_STATICEDGE, 0);    pFrame->SetWindowPos(NULL, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE | SWP_NOZORDER | SWP_FRAMECHANGED | SWP_SHOWWINDOW);    pFrame->UpdateWindow(); 

读书人网 >VC/MFC

热点推荐