本文翻译自http://www.microsoft.com/msj/0597/c0597.aspx
此文章可能包含在发布时有效的网络连接,但是现在可能连接到不存在的网站或网页。为保持文章的完整性,我们保留连接的文字,但是禁用连接。
|
|
| Q我如何写一个像Microsoft® Encarta®、 Bookshelf®、和 MoneyHow那样绘制有纹理的背景的应用程序?我试过处理WM_ ERASEBKGND但是我不能使它工作。
Robert H. Mowery III
A
|
|
HBRUSH CMyFormView::OnCtlColor( CDC* pDC, CWnd* pWnd, UINT nCtlColor){ pDC->SetBkMode(TRANSPARENT); pDC->SetTextColor( GetSysColor(COLOR_WINDOWTEXT)); return m_brDents;}我设置背景模式为透明,使所有文本被透明地画出来(例如,单选框、静态控件或文本框),不用改变背景。
// In CMyFormView::CMyFormViewm_bmDents.LoadBitmap(IDB_DENTS);m_brDents.CreatePatternBrush(&m_bmDents); |
|
|
HBRUSH CMyFormView::OnCtlColor(...) { if (nCtlColor==CTLCOLOR_EDIT) // normal processing: // don't do anything return CFormView::OnCtlColor(pDC, pWnd, nCtlColor); • • • } |
![]() |
| 现在文本框正常时显示为白色(实际上的 WINDOW_COLOR) (见 图 7)。我个人认为不动文本框是上策。如果你确实要你的文本框具有位图背景, 你将要做很多事情,因为文本框有很多自己的绘制过程,这个过程超出了一个专栏的范围,但是一个好的建议是使用和你的位图配合的纯色,像我在图8中使用的青色刷子一样。 |
![]() |
有关于C 或C++编程的问题? 发送它到askpd@pobox.com |
|
|
|
|
本文介绍如何在Windows应用程序中绘制有纹理的背景,包括处理WM_ERASEBKGND消息和使用图案刷绘制背景的方法。


2048

被折叠的 条评论
为什么被折叠?



