- 博客(13)
- 资源 (4)
- 收藏
- 关注
原创 Qt 开发之二 :固定窗口大小
#include"mainwindow.h"#include int main(int argc, char *argv[]){ QApplication a(argc, argv); MainWindow w; w.setFixedSize(800, 600); w.setWindowFlags(Qt::Window
2014-11-19 15:24:11 11592
原创 sscanf 使用中遇到的问题
unsigned byte byteRed, byteGreen, byteBlue;sscanf(strRGB.c_str(), "RGB(%d,%d,%d)", &byteRed, &byteGreen, &byteBlue);一个简单的小问题,却两次在上面犯错。还是记录下来吧。上面的代码 sscanf 中的format %d 所以类型应该 int类型,这里用unsigned byte会导致
2013-12-17 22:25:38 747
原创 《c++沉思录》第七章 句柄:第二部分
<br /> 在第六章中,一直跟着书走,并没有深入思考第六章中实现的句柄,一看第七章还是句柄,心生怀疑难道句柄还没有结束么,之前的设计有什么问题么,唉是真有,第六章中我们要实现句柄操作需要包括三个部分:原数据类,数据的引用计数封装类, 句柄类。问题出在引用计数这部分,我们的封装类使用的是具体类,没有办法做到通用,我们仍然必须回到基类指针上,我们可以让中间的类封装基类指针,这个是可以的,通过修改实现是没有问题的,即UPoint中同样使用Point* p,复杂一些,但仔细考虑一下结构Handle 中
2011-01-26 16:28:00 572
原创 《C++沉思录》 第六章 句柄 第一部分
<br /> 简单回顾一下第五章节,Andrew Koening向我们提出了一个问题,在一个继承体系中,如何设计一个容器可以容纳各个不同的子类对象。显然无法使用基类对象数组,如果是抽象基类,没有办法进行实例化。很自然的我们容易想到可以使用基类指针,但这样对象内存管理便交于用户了,容易造成很多麻烦问题。为了解决此问题,Koening使用了代理类。<br /> 什么是代理类呢,简单来说,就是封装了基类指针并可以提供所有功能接口的类。在代理类的构造过程中,使用对象的指针初始化代理类的基类指针成员
2011-01-25 17:16:00 627
原创 MFC中CMapPtrtoPtr的实现
<br />CMapPtrtoPtr的数据项由3部分组成,指向下一个数据项的指针,两个相关联的指针。定义如下:<br />struct CAssoc<br /> {<br /> CAssoc* pNext;<br /> void* key;<br /> void* value;<br /> };<br />这里相关联的含义是单向关联,即给某个value指针关联了一个key指针,我们可以通过key指针查找或删除对应value指针。现在我们思考一下CMapPtrtoPtr应该支持的基本操作,很明显的是我们
2011-01-11 14:53:00 2923
转载 如何在运行时确定对象类型(RTTI)
<br />作者:NorthTibet<br /> RTTI 是“Runtime Type Information”的缩写,意思是:运行时类型信息。它提供了运行时确定对象类型的方法。本文将简略介绍 RTTI 的一些背景知识、描述 RTTI 的概念,并通过具体例子和代码介绍什么时候使用以及如何使用 RTTI;本文还将详细描述两个重要的 RTTI 运算符的使用方法,它们是 typeid 和 dynamic_cast。<br /> 其实,RTTI 在C++中并不是什么新的东西,它早在十多年以前就已经出现了。
2010-12-28 17:18:00 359
转载 关于C++中RTTI的思考
<br />RTTI(运行时类型信息),是所有RAD开发工具的基础。 这段时间,因为需要在自己的软件中加入扩展的RTTI功能,于是专门对RTTI进行了研究,现在一些心得写下来。<br /> RTTI是比较新的编程语言提供的能力,C、Fortran、Basic就没有,而现在几乎所有现代的、可视化的编程语言都提供了RTTI功能。C++的标准中也对RTTI作了规定。但相对其它语言而言,C++的RTTI信息是最简单的。 <br /><br />一、RTTI典型的应用需求 <br /> 1、类型的识别,即能在
2010-12-28 17:15:00 313
原创 memcpy的使用问题
具体说一下使用环境吧,就是我通过网络从设备端获得一段数据buf以及其长度,然后我将这段内存拷贝到我自己的结构体中,这都没有问题,关键在于我指定的拷贝长度值是从网络获得的数据buf的长度。 有什么问题呢,由于通信双方扩展了各自的结构体,也就是buf的长度比原来增大了。由于我之前的这种拷贝方式,使用老的软件访问新的设备时,数据buf的长度就比结构体的长度要大,memcpy就会将一段结构体之后的内存指定了数值,这将带来不可测的问题。 因此在网络通信时,在使用memcpy时长度的指定最好使用结构体的
2010-12-17 19:30:00 723
原创 浮点数操作
float fx = 49.03f; int nx = fx * 100;printf("%d", nx);运行上述代码,结果:4902。用VC6.0,2005,GCC编译运行结果都是一样。为什么会这样呢,是因为浮点数运算具有不精确性。其实编译上面的代码,编译器会有警告的。warning C4244: 'initializing' : conversion from 'float' to 'int', possible loss of data将单精度浮点数强制转换为整形会造成数据精度丢失。因此我们在对
2010-12-14 20:59:00 1151
原创 字符串类的思考
<br /> 1.为什么要用字符串类来组织字符串的操作呢?<br /> 原因1:用类的形式将字符串操作组织起来,将原来分散的字符串函数集中起来,减少了记忆负担。<br /> 原因2:C语言提供的字符串操作的字符指针特性是比较容易出错的,用类来组织有助于减少指针操作带来的出错的可能性。<br /> (《c++ primer》)<br /> 2.MFC的CString类原理<br /> http://tangfeng.javaeye.com/blog/491985<br /> 看完这篇文章,
2010-12-13 13:57:00 321
转载 CString Class Research
<br /> <br />1. CString Initialize<br /> CString use CStringData structure as a buffer to store data and other information. <br />struct CStringData<br />{<br /> long nRefs; // reference count<br />
2010-12-10 15:57:00 526
跟我写makefile.doc
2010-11-06
VC绘制图像和方格(BMP)
2010-08-06
深入浅出MFC vc
2010-08-05
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人