我继承了EditView类 为了实现文本编辑
于是我想为编辑框添加一个背景
在MyView类响应了WM_PRINT消息函数 加入如下代码
void CABCView::OnPaint()
{
CPaintDC dc(this); // device context for painting CDC C_dc;
C_dc.CreateCompatibleDC(&dc);
CBitmap Cbackgroundmap;
Cbackgroundmap.LoadBitmap(IDB_BITMAP1);
BITMAP cbitmap;
Cbackgroundmap.GetBitmap(&cbitmap);
C_dc.SelectObject(&Cbackgroundmap); RECT m_rect;
GetClientRect(&m_rect);
// CString s;
// s.Format("rect.x=%d,rect.y=%d",m_rect.right-m_rect.left,m_rect.bottom-m_rect.top );
// MessageBox(s); dc.StretchBlt(
0,
0,
m_rect.right-m_rect.left ,m_rect.bottom-m_rect.top, &C_dc,
0,
0,
cbitmap.bmWidth, cbitmap.bmHeight,
SRCCOPY
);
// TODO: Add your message handler code here
// Do not call CEditView::OnPaint() for painting messages
}
但文本编辑到有滚动条的时候 拖动滚动条 背景发生重绘 原来的背景就变质了
可不可以让背景不随滚动条的滚动而发生重绘 就是静态背景 该怎么做
于是我想为编辑框添加一个背景
在MyView类响应了WM_PRINT消息函数 加入如下代码
void CABCView::OnPaint()
{
CPaintDC dc(this); // device context for painting CDC C_dc;
C_dc.CreateCompatibleDC(&dc);
CBitmap Cbackgroundmap;
Cbackgroundmap.LoadBitmap(IDB_BITMAP1);
BITMAP cbitmap;
Cbackgroundmap.GetBitmap(&cbitmap);
C_dc.SelectObject(&Cbackgroundmap); RECT m_rect;
GetClientRect(&m_rect);
// CString s;
// s.Format("rect.x=%d,rect.y=%d",m_rect.right-m_rect.left,m_rect.bottom-m_rect.top );
// MessageBox(s); dc.StretchBlt(
0,
0,
m_rect.right-m_rect.left ,m_rect.bottom-m_rect.top, &C_dc,
0,
0,
cbitmap.bmWidth, cbitmap.bmHeight,
SRCCOPY
);
// TODO: Add your message handler code here
// Do not call CEditView::OnPaint() for painting messages
}
但文本编辑到有滚动条的时候 拖动滚动条 背景发生重绘 原来的背景就变质了
可不可以让背景不随滚动条的滚动而发生重绘 就是静态背景 该怎么做
放在OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)这个消息函数里
BRUSH hbrush=0;
if(!hbrush)
{
HBITMAP hbitmap=LoadBitmap(GetModuleHandle(0),MAKEINTRESOURCE(IDB_BITMAP));
hbrush=CreatePatternBrush(hbitmap);
}
SetBkMode((HDC)wParam,TRANSPARENT);
return hbrush;
break;SDK的写法,不过对MFC应该同样能用