本文翻译自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 |
|
|
|
|
本文翻译自微软网站文章,保留原文连接文字但禁用连接,文章发布于1997年5月,还提及文章代码为C++0597.exe,大小22KB。



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



