// TODO: Add extra initialization here SetTimer(1,1000,0); return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE } void Expands::OnTimer(UINT nIDEvent) { if(nIDEvent==1) { CClientDC dc(GetDlgItem(IDC_EGRAPH)); CBrush MyBrush(RGB(124,221,26)); CPen MyPen(PS_INSIDEFRAME,1,RGB(0,0,0));
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
SetTimer(1,1000,0);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void Expands::OnTimer(UINT nIDEvent)
{
if(nIDEvent==1)
{
CClientDC dc(GetDlgItem(IDC_EGRAPH));
CBrush MyBrush(RGB(124,221,26));
CPen MyPen(PS_INSIDEFRAME,1,RGB(0,0,0));
dc.SelectObject(&MyBrush);
dc.SelectObject(&MyPen);
int x,y;
dc.Rectangle(0,0,751,651);
CPen MyPenL;
LOGPEN lp;
lp.lopnColor=RGB(154,154,154);
lp.lopnStyle=PS_SOLID;
lp.lopnWidth.x=1;
MyPenL.CreatePenIndirect(&lp);
dc.SelectObject(&MyPenL);
for(x=5;x<750;x+=5)
{
dc.MoveTo(x,0);
dc.LineTo(x,650);
}
for(y=5;y<650;y+=5)
{
dc.MoveTo(0,y);
dc.LineTo(750,y);
}
}
CDialog::OnTimer(nIDEvent);
}
Expands是我生成对话框的所属的类,CDialog
这段代码仔程序中是没有反应的,并不能画图。
画图代码不会有问题,在新对话框的void Expands::OnPaint() 函数中也是这段代码,能显示所期待的图,只不过背景是黑色。而定时器里面的图无非把黑色改成了绿色而已。
我试试先。
如果不是在窗口类里定义的,好像是不可以的,就算用API的方法定义,还是要父窗口的句柄的。Timer就是联系到窗口的。
用SetParent的方法会比较好吧。
CClientDC dc(GetDlgItem(IDC_EGRAPH));
改为CClientDC dc(this);
结果,可以显示啊,绿色的,很多小格子,而且1秒中闪一下,应该是画图成功才会闪的。没有问题啊!!!
我想不是CClientDC dc(GetDlgItem(IDC_EGRAPH))的问题了
过会儿我把主对话框的settimer响应函数去掉。我担心是不是这个问题你可以在主对话框中也添加settimer函数试试看。
邮箱[email protected]
我想看看我到底那里出了问题。