我在对话框中的Onpaint()函数中在对话框上画了个矩形,但是在生成对话框的时候却没有出来,是怎么回事??
然后我在OnLButtonDown()中加上InvalidateRect(&rect);只有当rect没有覆盖我画的矩形我点击鼠标后矩形就会出来。而我改用Invalidate()刷新整个窗口矩形就不会出来了。请问当我刷新整个窗口时除了Onpaint()是不是还有什么函数被调用来更新窗口??
然后我在OnLButtonDown()中加上InvalidateRect(&rect);只有当rect没有覆盖我画的矩形我点击鼠标后矩形就会出来。而我改用Invalidate()刷新整个窗口矩形就不会出来了。请问当我刷新整个窗口时除了Onpaint()是不是还有什么函数被调用来更新窗口??
{
CPaintDC dc(this);
//在此dc上作图即可。
}
if (IsIconic())
{
// device context for painting SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0); // Center icon in client rectangle
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2; // Draw the icon
dc.DrawIcon(x, y, m_hIcon);
dc.SelectStockObject (BLACK_BRUSH);
dc.Rectangle (0,0,200,200);
}
else
{
CDialog::OnPaint();
}
/********************************/ dc.SelectStockObject (BLACK_BRUSH);
dc.Rectangle (0,0,200,200);
}
{
CPaintDC dc(this); // device context for painting CDC *pDC;
CWnd *pWnd;
CRect rect;
pWnd = GetDlgItem(IDC_STATIC);
pDC = pWnd->GetDC();
::GetClientRect(pWnd->m_hWnd, &rect);
CPen newPen,*oldPen;
CBrush newBrush(RGB(0,0,0)), *pOldBrush;
pOldBrush = (CBrush *)pDC->SelectObject(&newBrush);
newPen.CreatePen(PS_SOLID, 1,RGB(0,0,0);
oldPen = (CPen*)pDC->SelectObject(&newPen); pDC->Rectangle(&rect);
pDC->SelectObject(pOldBrush);
pDC->SelectObject(oldPen);
pWnd->ReleaseDC(pDC);
}
Invalidate()= Invalidate(TRUE);
在OnPaint()后面加一句
pWnd->Invalidate();
CWnd *pWnd;
pWnd = GetDlgItem(IDC_STATIC);
pDC = pWnd->GetDC();
.......
这样也是在对话框中画的不是在Static中画的啊??那要怎么样才能不让Static遮住呢??