MFC 小知识总结二
1 UpdateData 不能及时更新控件内容
原因:
UpdateData是通过数据交换实现改变控件显示的。改变了之后必需要调用一次OnPaint才干实现刷新。
因此,若是在一个函数里重复多次调用有时是没有效果的。
若想及时更新控件内容。在调用UpdateData后。须要再调用下UpdateWindow() 来刷新窗体。
- UpdateData(FALSE);
- UpdateWindow();
2 Invalidate、Invalidate(FALSE)、Invalidate(TRUE) 关系
1)
- void Invalidate(
- BOOL bErase = TRUE
- );
bErase
-
Specifies whether the background within the update region is to be erased.
Invalidate() 相当于 Invalidate(TRUE)
TRUE代表更新时察除背景色
FALSE表示更新时不察除背景,在原有背景上继续绘图
2)
UpdateWindow(); 表示马上更新
可是必须先设置须要更新的无效区域才有效果, 否则不会发生变化。
下例显示的效果为: 直接在原图背景上 绘制新图, 因此会有反复现象
- Invalidate(FALSE);
- UpdateWindow();
下例显示的效果为: 先将原图清理掉,然后再画新图, 因此不会有反复现象,但可能会发生闪烁
其效果等同于RedrawWindow()
- Invalidate();
- UpdateWindow();
- RedrawWindow();
3 使用空刷子绘图和不使用空刷子绘图的差别
- CBrush * pBrush=CBrush::FromHandle((HBRUSH(GetStockObject(NULL_BRUSH))));
- CBrush* pOldBrush=pDC->SelectObject(pBrush);
- Draw(); //使用空刷子绘图
- pDC->SelectObject(pOldBrush);
考虑这样一种情况:
先画一个小矩形, 然后再画一个大矩形。使得大矩形包括小矩形
- CRect rc1(0,0,100,100);
- CRect rc2(0,0,200,200);
- pDC->Rectangle(&rc1);
- pDC->Rectangle(&rc2);
1) 不使用空刷子时, 则终于结果仅仅能看见大矩形
2) 使用空刷子时。 则大小矩形都可看见
原因分析:
不使用空刷子,系统默认的白色刷子, 这样绘图时, 先使得绘图区域失效。然后用刷子刷一下绘图区域,最后再往这块区域中绘图。
因此,当画大矩形时, 先用刷子刷这块区域,这样就将小矩形给冲刷掉了。
而。 使用空刷子时。 由于刷子是空的, 所以画大矩形时, 便不再用刷子刷这块区域, 而是直接在这块区域上绘图,因此。原先的小矩形还保留着,没有受到影响。
4 画矩形框架(仅仅画外围框架,不覆盖内部内容)
- CBrush brush(RGB(255,0,0));
- CRect rect(0,0,100,100);
- pDC->FrameRect(&rect,&brush);
5 ON_COMMAND与ON_UPDATE_COMMAND_UI 差别
ON_COMMAND是点了button或菜单项后的响应消息,
ON_UPDATE_COMMAND_UI是用来表示相应的button和菜单项的状态的响应消息. 消息函数对button的状态进行控制, 如将button设置为无效(灰色显示)
如:控制buttonIDM_DRAW_TABLE 是否有效
- afx_msg void OnUpdateDrawTable(CCmdUI *pCmdUI);
- ON_UPDATE_COMMAND_UI(IDM_DRAW_TABLE, OnUpdateDrawTable)
- void CImageView::OnUpdateDrawTable(CCmdUI *pCmdUI)
- {
- if(m_TableStep==2) pCmdUI->Enable(TRUE); //button有效
- else pCmdUI->Enable(FALSE); //button无效
- }
- void CImportView::OnUpdateFormatBrush(CCmdUI *pCmdUI)
- {
- if (bFormat)
- {
- pCmdUI->Enable(TRUE);
- pCmdUI->SetRadio(TRUE); //显示凹陷状态
- return;
- }else
- pCmdUI->SetRadio(FALSE); //显示正常状态
- }
6 画工具栏button
【视图】-->【工具栏】--->【图像编辑器】 调出图像编辑器工具栏。
选取工具栏中提供的工具, 当中包括 A (文本工具---能够直接往工具栏button写字)
选择颜色时,没有 填充工具 或 颜色选择工具时 没有调出系统颜色窗体 , 此时 需通过 【图像】-->【显示颜色窗体】来显示不同的颜色
当往一个button上写2个字时, 点中工具栏上的A后,须要划出一个字的范围, 写入改字后。再调整范围,然后划出还有一个字的范围,再画还有一个字, 最后调节两字。
能够使用放大镜将其放大到最大程度书写
MFC 小知识总结二的更多相关文章
- MFC 小知识总结四
1 PlaySound 播放WAV格式的音乐 This function plays a sound specified by a file name, resource, or system ev ...
- AngularJs——基础小知识(二)
AngularJs的过滤器 1.Currency :过滤器(金额货币格式化)
- js--Ajax的小知识(二):处理ajax的session过期的请求
问题的产生: 现如今Ajax在Web项目中应用广泛,几乎可以说无处不在. 有时会碰到这样个问题:当Ajax请求遇到Session超时,应该怎么办? 显而易见,传统的页面跳转在此已经不适用,因为Ajax ...
- MFC 小知识总结五
1 移动无标题对话框 响应WM_NCHITTEST 消息 [cpp] view plaincopy LRESULT CTimeJishiDlg::OnNcHitTest(CPoint point) ...
- MFC 小知识总结三
1 载入资源位图 1 获取程序实例 HINSTANCE m_hInst; m_hInst=AfxGetInstanceHandle(); //获取程 ...
- 【C#小知识】C#中一些易混淆概念总结(二)--------构造函数,this关键字,部分类,枚举 分类: C# 2014-02-03 01:24 1576人阅读 评论(0) 收藏
目录: [C#小知识]C#中一些易混淆概念总结--------数据类型存储位置,方法调用,out和ref参数的使用 继上篇对一些C#概念问题进行细节的剖析以后,收获颇多.以前,读书的时候,一句话一掠而 ...
- HTML+CSS中的一些小知识
今天分享一些HTML.CSS的小知识,希望能够对大家有所帮助! 1.解决网页乱码的问题:最重要的是要保证各个环节的字符编码一致! (1)编辑器的编辑环境的字符集(默认字符集):Crtl+U 常见的编码 ...
- salesforce 零基础开发入门学习(十)IDE便捷小知识
在这里介绍两个IDE的便捷开发的小知识. 一) 本地调试 由于salesforce代码只能提交以后才能调试,所以很多时候调试代码很麻烦.新版增加了一个特性:即可以在本地调试相关的代码或者查看相关代码运 ...
- Jquery:小知识;
Jquery:小知识: jQuery学习笔记(二):this相关问题及选择器 上一节的遗留问题,关于this的相关问题,先来解决一下. this的相关问题 this指代的是什么 这个应该是比较好理 ...
随机推荐
- 慎用 new、delete
C++ STL 为我们提供了一套容器.在多数情况下,这套容器已足够让我们使用.所以,需要我们自己去用 new/new []/delete/delete [] 来管理内存的必要性并不是很大.此外,自己管 ...
- hdu 5288 OO’s Sequence(2015多校第一场第1题)枚举因子
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5288 题意:在闭区间[l,r]内有一个数a[i],a[i]不能整除 除去自身以外的其他的数,f(l,r ...
- Codeforces Round #281 (Div. 2) A. Vasya and Football 暴力水题
A. Vasya and Football time limit per test 2 seconds memory limit per test 256 megabytes input standa ...
- 利用Hog特征和SVM分类器进行行人检测
在2005年CVPR上,来自法国的研究人员Navneet Dalal 和Bill Triggs提出利用Hog进行特征提取,利用线性SVM作为分类器,从而实现行人检测.而这两位也通过大量的测试发现,Ho ...
- 快速定位问题 Request无法获取参数
比如说最近开发甲修改了iframe标签的src,开发乙在设置src的时候传入了2个参数,通过iframe标签链接到这个页面时,开发乙调试时发现没有拿到任何参数值.然后开发乙百度了一下,发现iframe ...
- Xcode 几个图标解释
File.让您指定串联图的常规信息. Quick Help.提供有关对象的实用文稿. Identity.让您指定对象的自定类并定义其辅助功能属性. Attributes.让您自定对象的可视化属性. S ...
- Node.js学习笔记(2) - Node.js安装及入门hello world
今天来简单的记录一下Node.js的安装配置以及简单的入门 一.Node.js的安装 1.windows下的安装 windows下的安装很简单,只需要去官网http://nodejs.org中,找到w ...
- 简易配置Django的Static文件
http://blog.csdn.net/hireboy/article/details/8806098 Django 1.3以后,采用static方式处理静态文件,比如网站的css js image ...
- 如何在ubuntu安装phpstorm
第一步:使用组合键ctrl+alt+t 打开Terminal,cd /home/xxx(当前登录用户名)/downloads(下载目录) 第二步:下载 phpstorm 附截止发文最新版本链接:htt ...
- java8函数式接口小例子
// Function<T, R> -T作为输入,返回的R作为输出 Function<String,String> function = (x) -> {System.o ...