Ai
随笔 - 4, 文章 - 0, 评论 - 0, 引用 - 0
数据加载中……
MFC绘图问题
学习MFC绘图的时候,发现一个问题,看别人的代码画线很流畅,怎么自己写出来感觉有点延迟,感觉卡卡的,后来发现了问题的原因所在。
之前代码是这样的:
void
CTest1View::OnLButtonDown(UINT nFlags, CPoint point)
{
//
TODO: 在此添加消息处理程序代码和/或调用默认值
m_ptOrgin
=
point;
CView::OnLButtonDown(nFlags, point);
}
void
CTest1View::OnLButtonUp(UINT nFlags, CPoint point)
{
//
TODO: 在此添加消息处理程序代码和/或调用默认值
CClientDC dc(
this
);
dc.MoveTo(m_ptOrgin);
dc.LineTo(point);
CView::OnLButtonUp(nFlags, point);
}
这样只所以卡,是因为MFC内部把WM_PAINT消息是一个低优先级消息,系统会让比他优先级高的提前处理,这样当系统处理其他消息的时候,总是会延后处理WM_PAINT消息。所以,要让系统提前处理它,可以这么做:
void
CTest1View::OnLButtonDown(UINT nFlags, CPoint point)
{
//
TODO: 在此添加消息处理程序代码和/或调用默认值
m_ptOrgin
=
point;
CView::OnLButtonDown(nFlags, point);
}
void
CTest1View::OnLButtonUp(UINT nFlags, CPoint point)
{
//
TODO: 在此添加消息处理程序代码和/或调用默认值
CClientDC dc(
this
);
Invalidate(
0
);
UpdateWindow();
dc.MoveTo(m_ptOrgin);
dc.LineTo(point);
CView::OnLButtonUp(nFlags, point);
}
这样先让窗口无效,再绘图,就能满足要求。
虽然这样能解决这个问题,但我还是不能理解为什么别人的工程按照第一个方法写的依然可以正常运行,而每次我自己写的却有这个问题。
posted on 2010-12-13 23:54
王凯
阅读(416)
评论(0)
编辑
收藏
引用
所属分类:
MFC
只有注册用户
登录
后才能发表评论。
【推荐】100%开源!大型工业跨平台软件C++源码提供,建模,组态!
相关文章:
MFC程序框架的剖析(转载)
MFC绘图问题
网站导航:
博客园
IT新闻
BlogJava
知识库
博问
管理
Powered by:
C++博客
Copyright © 王凯
导航
C++博客
首页
新随笔
联系
聚合
管理
<
2010年12月
>
日
一
二
三
四
五
六
28
29
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
6
7
8
常用链接
我的随笔
我的评论
我参与的随笔
留言簿
(1)
给我留言
查看公开留言
查看私人留言
随笔分类
C++(2)
(rss)
DirextX
(rss)
MFC(2)
(rss)
随笔档案
2010年12月 (4)
搜索
最新评论
阅读排行榜
1. MFC绘图问题(416)
2. MFC程序框架的剖析(转载)(343)
3. Visual C++ ADO数据库编程入门(下)(转)(211)
4. Visual C++ ADO数据库编程入门(上)(转)(195)
评论排行榜
1. MFC绘图问题(0)
2. MFC程序框架的剖析(转载)(0)
3. Visual C++ ADO数据库编程入门(上)(转)(0)
4. Visual C++ ADO数据库编程入门(下)(转)(0)