昨天写一个简单的画图程序,遇到一个奇怪的问题,目的是想点鼠标左键,画个以此点为中心画个椭圆,最初的代码如下:
<!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>-->voidCE02View::OnLButtonDown(UINTnFlags,CPointpoint)
{
CPaintDCdc(this);
OnPrepareDC(&dc);
if(this->m_nColor==GRAY_BRUSH)
{
this->m_nColor=WHITE_BRUSH;
}
else
{
this->m_nColor=GRAY_BRUSH;
}
this->m_rectEllipse.left=point.x/2;
this->m_rectEllipse.right=point.x+point.x/2;
this->m_rectEllipse.top=point.y+point.y/2;
this->m_rectEllipse.bottom=point.y/2;
this->OnDraw(&dc);
CView::OnLButtonDown(nFlags,point);
}
voidCE02View::OnDraw(CDC*pDC)
{
CE02Doc*pDoc=GetDocument();
ASSERT_VALID(pDoc);
pDC->SelectStockObject(this->m_nColor);
pDC->Ellipse(this->m_rectEllipse);
}
并且也考虑了第一次运行时会发出WM_PAINT事件,而在OnPaint方法里会去调用OnDraw(),所以我把OnPaint重写了,让其不调用OnDraw,这样第一次运行就不会去画了。
<!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>-->voidCE02View::OnPaint()
{
CPaintDCdc(this);//devicecontextforpainting
}
可尽管这样,点击鼠标左键还是无法画出东西来,问了下师兄,他也不熟悉VC,弄了一会儿也无功而返,今天想了下可能是DC有问题,换了个CClientDC,唉,好了,真是怪了,用CPaintDC我是想模仿这OnPaint()的代码来写,按道理说应该可以的,可为什么在OnLButtonDown里就不行呢?最后可以运行的代码如下:
<!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>-->voidCE02View::OnLButtonDown(UINTnFlags,CPointpoint)
{
CClientDCdc(this);
OnPrepareDC(&dc);
if(this->m_nColor==GRAY_BRUSH)
{
this->m_nColor=WHITE_BRUSH;
}
else
{
this->m_nColor=GRAY_BRUSH;
}
this->m_rectEllipse.left=point.x/2;
this->m_rectEllipse.right=point.x+point.x/2;
this->m_rectEllipse.top=point.y+point.y/2;
this->m_rectEllipse.bottom=point.y/2;
this->OnDraw(&dc);
CView::OnLButtonDown(nFlags,point);
}
这样看来,CPaintDC是专门用来在响应WM_PAINT消息时使用的,其他消息处理程序中不能使用
分享到:
相关推荐
spring的一个小问题
使用struts拦截器需要注意的一个小问题.docx
Google 出品:用最漂亮的方式去换行,尽管目前只支持日文,但解决一个小问题,做到极致的精神超赞。.zip,budou是cjk(中文、日文和韩文)中用于漂亮线条打断的自动组织工具。
1561377 [显示:小字体 | 大字体] 我在一个combobox的单击事件里 使用了两个adoquery 进行查询,执行顺序是:使用第一个adoquery对表1进行查询(使用带有参数的select),将查询的结果赋给一个变量保存然后将该变量保存的...
最近在学struts2,遇到了个小问题,就是在struts.xml文件中提示下列warnings: The file cannot be validated as the host "struts.apache.org" is currently unreachable 在网上找了很久,没有找到解决方法,后来...
NULL 博文链接:https://hwy1782.iteye.com/blog/1859960
eclips 中使用遇到的问题 这里有具体的描述 方便大家下载
结构清晰,内容简单易懂,代码非常规范,适用于初学者。
PythonToys一些 python 写的小工具,通常很短,只解决一个小问题cut-json-list.py# 本脚本用于裁剪 json 文件中某个 list 的项数# 例如,你抓包了一个商品列表接口的数据,里面有20项商品数据# 你想做 mock 用的 ...
原作地址https://download.csdn.net/download/yueyun889/10150481,解决了解密时如果选择了base64可能报错的问题
尽管这是一个小问题,但我们希望您提交可以运行,维护和发展的“生产质量”代码。 您应该提交希望在实际项目中生成的代码,或者希望从同事那里收到的代码。 您的代码将充当进一步技术讨论的指针。 问题陈述:饭店...
本文给大家记录的是个人在使用$.extend 的时候遇到的一个小问题,以及原因分析和解决方案,十分的实用,有需要的小伙伴可以参考下。
★问题描述:给定一个赋权无向图G=(V,E),每个顶点v∈V都有一个权值w(v)。如果U∈V,且对任意(u,v)∈E有u∈U或v∈U,就称U为图G的一个顶点条覆盖.G的最小权顶点覆盖是指G中所含顶点权之和最小的顶点覆盖。 ★算法设计:...
主要给大家介绍了关于Swift利用Decodable解析JSON的一个小问题的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
JSON (JavaScript Object Notation)一种简单的数据格式,比xml更轻巧,下面通过本文给大家介绍JS中Eval解析JSON字符串的一个小问题,需要的朋友参考下吧
大家好,我有一个小问题。 我正在使用一个数组在 matlab 中生成一些条纹,我用零到一之间的值填充。 随着功能 颜色图('灰色') 图像c(矩阵) 对于 0 到 0.4 之间的值,我可以获得带有黑色的条纹图像; 0.5 和 1 ...
给定一个赋权无向图G=(V,E),每个顶点v∈V都有一个权值w(v).如果U包含于V,且对任意(u,v)∈E有u∈U或v∈U,就称U为图G的一个顶点条覆盖.G的最小权顶点覆盖是指G中所含顶点权之和最小的顶点覆盖. 编程任务 对于结定的...
子集和问题的一个实例为〈S,t〉。其中,S={x1,x2,...,xn}是一个正整数的集合,c 是一个正整数。子集和问题判定是否存在S的一个子集S1,使得x∈S1,∑x=c. 试设计一个解子集和问题的回溯法。 «编程任务: 对于...
本章介绍用线性模型处理回归问题。从简单问题开始,先处理一个响应变量和一个解释变量的一元问题。然后,我们介绍多元线性回归问题...在研究一个大数据集问题之前,我们先从一个小问题开始学习建立模型和学习算法。
1.良好的沟通能力。一个好的QA不仅要能发现问题,而且要...不要放过一个任何一个小问题,以怀疑的态度来测试软件。 4.会对自己的经历进行及时的总结。特别是一些小公司的QA,因为没有经过系统的培训,在测试的路上 处