📄 subject_54217.htm
字号:
<p>
序号:54217 发表者:太急张三疯 发表日期:2003-09-26 15:04:43
<br>主题:我想要一个窗口框架添加底图的源代码
<br>内容:最好不使用自己编写的类,就用VC提供的多文档窗口框架,怎么填加的底图?
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:hurtmanzc 回复日期:2003-09-26 20:15:20
<br>内容:---- 要改变MDI主窗口的客户区背景,要先Subclass MDI主窗口的客户区子窗口,然后再处理WM_ERASEBKGND消息。 <BR><BR> ---- 我们可以通过执行以下步骤来示范如何修改MDI主窗口的客户区背景: <BR><BR> ---- 1.用ClassWizard创建一个基类为CWnd的窗口类,可以命名为CNewClientWnd。 <BR><BR> ---- 2.在CMainFrame中添加类型为上一步创建的窗口类CNewClientWnd的成员变量,可以命名为m_wndNewClient。 <BR> 3.在CMainFrame的成员函数OnCreate中,对基类CMDIFrameWnd::OnCreate()的调用之后,添加一条对SubClassWindow()的调用语句。 <BR><BR> if (!m_wndNewClient.SubclassWindow(m_hWndMDIClient))<BR> {<BR> TRACE("Failed to subclass MDI client window\n");<BR> return -1; // fail to create<BR> }<BR><BR> ---- m_hWndMDIClient是CMDIFrameWnd的成员变量,包含了MDI客户窗口的句柄。 <BR><BR> ---- 注意:(通过Help来查阅CMDIFrameWnd的成员变量,你是找不到m_hWndMDIClient的) <BR><BR> ---- 4.使用开始的示范代码来处理第一步创建的窗口类CNewClientWnd的WM_ERASEBKGND消息。 下面的代码改变了背景颜色,若要添加背景图,可以加入一位图资源,修改下面的函数,显示它。如下:<BR><BR>BOOL CNewClientWnd::OnEraseBkgnd(CDC* pDC)<BR> {<BR> // 设置画刷为希望的背景色<BR> CBrush backBrush(RGB(255, 128, 128));<BR><BR> // 保存旧画刷<BR> CBrush* pOldBrush = pDC- >SelectObject(&backBrush);<BR><BR> CRect rect;<BR> pDC- >GetClipBox(&rect); <BR> // 擦除需要的区域<BR><BR> // 用创建的画刷绘制背景区域<BR> pDC- >PatBlt(rect.left, rect.top, rect.Width(), rect.Height(),<BR> PATCOPY);<BR> pDC- >SelectObject(pOldBrush);<BR> return TRUE;<BR> }<BR><BR><BR><BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:叼烟斗的男人 回复日期:2003-09-26 22:40:39
<br>内容:可能你领会错了意思了,我想在菜单、工具栏状态栏中添加背景图象,不是在客户区<BR>thanks anyway<BR>2003-9-26 22:41:02
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -