有时候,画出来的线条,在窗口内怎么总是闪呢?请教
有时候,画出来的线条,在窗口内怎么总是闪呢?请教
我的在对话框里,一个STATIC内画图,用的是WM_PAINT消息,有时候就看不到我想看到的图形,有时候图形一直闪个不停。怎么办?
问题点数:0、回复次数:5Top
1 楼rockersz(世上的无奈需要我去忍耐...)回复于 2005-06-04 14:21:39 得分 0
要看看你的代码才知道,可能你的程序中不停地发送WM_PAINT消息Top
2 楼yohua(叫花子)回复于 2005-06-04 14:26:31 得分 0
void CTreeDlgDlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // 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);
}
else
{
// CDialog::OnPaint();
}
CStatic* pStatic = (CStatic*)GetDlgItem(IDC_STATIC);
CDC* pDC = pStatic->GetDC();
CRect StaticRect;
pStatic->GetClientRect(StaticRect);
CBrush BkBrush;
BkBrush.CreateSolidBrush(RGB(0,0,0));
pDC->FillRect(&StaticRect,&BkBrush);
if(m_Str!="")
{
CPen WrtPen;
WrtPen.CreatePen(PS_SOLID,1,RGB(255,255,255));
CPen* OldPen;
OldPen = pDC->SelectObject(&WrtPen);
pDC->MoveTo(150,100);
pDC->LineTo(100,250);
pDC->SelectObject(OldPen);
}
ReleaseDC(pDC);
}
其中的m_Str是控制的字符串,就是这样的。你说的对 就是不停的发送消息 我不知道怎么该,,帮帮我。Top
3 楼o1n(小毛子)回复于 2005-06-04 17:27:05 得分 0
直接在C***View::OnDraw(CDC* pDC)里画呀Top
4 楼dawndu(东南飞)回复于 2005-06-05 00:41:05 得分 0
使用双缓冲!Top
5 楼xlzxlich(阳光)回复于 2005-06-05 01:31:03 得分 0
把
CPaintDC dc(this); // device context for painting
移到
if (IsIconic())
外面。
Top




