一个关于 pDC 的问题 请教各位大侠了! 你说"然后在其他函数里面使用pdc 做图"这个函数在什么地方被调用呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 在使用pdc时,这个全局变量是否没被初始化呢?就是说pdc=pDC是否在调用之后。 在OnTimer 但是在OnTimer相应的时候应该已经赋了值了 比如这样:CDC * pdc;void CTest::m_Draw(CDC *pDC){ pdc=pDC; SetTimer(1,5000,NULL);}void Ctime::OnTimer(UINT nIDEvent) { // TODO: Add your message handler code here and/or call default pdc->MoveTo(1,1); pdc->LineTo(200,300); CWnd::OnTimer(nIDEvent);} void Ctime::OnTimer(UINT nIDEvent) 改成 void CTest::OnTimer(UINT nIDEvent) OnDraw(CDC *pDC)在整个运行过程是要被执行很多次的。 你想在定时器中画图,这种做法好象不符合windows 下的做法,它一般提倡将做图的语句放在OnDraw中,在定时器中更新。 就是说 只能在每次时间到时 通过Invalidate() 刷新 再重新OnDraw呗! 是什么问题被中断了?说出来有利于大家分析,否则只能猜http://hi.baidu.com/yulingkong 是不是没有初始化哦最好是在初始化函数里给一个初始值在用之前 判断一下 是否为空。。if(pdc ==NULL) return; 我试了一下 没有空 会向下执行 进入MoveTo函数体内CPoint CDC::MoveTo(int x, int y){ ASSERT(m_hDC != NULL); CPoint point; if (m_hDC != m_hAttribDC) VERIFY(::MoveToEx(m_hDC, x, y, &point));///在此处停了下来 if (m_hAttribDC != NULL) VERIFY(::MoveToEx(m_hAttribDC, x, y, &point)); return point;} 难道在OnTimer函数里就不能作图了么? 可以,但是不要保留DC或DC指针,每次作图时获得和释放DC,这时不要考虑效率问题。 有兴趣的进来谈谈关于加班那点破事 自绘菜单某个项的文本颜色问题! 如何将 一个CString 赋值跟 char* Name [100] list control 问题 vc 中 this 用法 请问用文本怎么做数据库啊 怎么把一个电脑的鼠标键盘事件广播到另一台电脑上执行? 各位大虾,进来坐坐...... CMainFrame与CMyView关系? 是不是说cpu有几个核心,系统就最多能有几个进程处于执行状态? VC 怎么显示PCT格式图象文件 关于LPCTSTR和CHAR的问题
CDC * pdc;
void CTest::m_Draw(CDC *pDC)
{
pdc=pDC;
SetTimer(1,5000,NULL);
}
void Ctime::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
pdc->MoveTo(1,1);
pdc->LineTo(200,300);
CWnd::OnTimer(nIDEvent);
}
改成
void CTest::OnTimer(UINT nIDEvent)
最好是在初始化函数里给一个初始值
在用之前 判断一下 是否为空。。
if(pdc ==NULL)
return;
CPoint CDC::MoveTo(int x, int y)
{
ASSERT(m_hDC != NULL);
CPoint point; if (m_hDC != m_hAttribDC)
VERIFY(::MoveToEx(m_hDC, x, y, &point));///在此处停了下来
if (m_hAttribDC != NULL)
VERIFY(::MoveToEx(m_hAttribDC, x, y, &point));
return point;
}