本文翻译自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::CMyFormView m_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 |
|
|