CView::OnUpdate()的问题
void CBitmapView::OnUpdate(CView* pSender, LPARAM lHint, CObject* pHint)
{
if (lHint == 0x7c) {
int* obj = (int*)pHint; // pHint保存方格的位置,和颜色
ASSERT(obj[0] >= 0 && obj[0] < 25 && obj[1] >= 0 && obj[1] < 40);
int x1 = obj[0] * 30 + 30; //记算LEFT TOP X坐标
int y1 = obj[1] * -30 - 30; //记算LEFT TOP Y坐标
int x2 = x1 + 30; // RIGHT BOTTOM X坐标
int y2 = y1 - 30; // RIGHT BOTTOM Y坐标
CRect rect(x1, y1, x2, y2);
CBrush brush(obj[2]);
CClientDC dc(this);
OnPrepareDC(&dc);
dc.FillRect(rect, &brush);
InvalidateRect(&rect);
return;
}
CView::OnUpdate(pSender, lHint, pHint);
}
其中CBitmapView如下定义
class CBitmapView : public CView {
...
}
我要实现的功能是在鼠标左键按下时,其所对应的方格用选中的颜色填充,但是程序运行后并不能立即重绘,屏幕上一点变化都没有,但是如果把窗口最小化或用别的窗口将它覆盖后却又看到重绘了,请问这是怎么回事?