C++
文章平均质量分 53
cthawdf
这个作者很懒,什么都没留下…
展开
-
qt 事件机制
什么是自发事件?哪些类型的事件可以被propagated 或compressed? posting and sending 事件之间有何不同?什么时候应该调用 accept() 或是ignore() ? 如果这些问题你还不是很了解,那么继续看下去。事件起源:基于事件如何被产生与分发,可以把事件分为三类:* Spontaneous 事件,由窗口系统产生,它们被放到系统队列中,通过转载 2012-04-24 09:19:38 · 2733 阅读 · 1 评论 -
c+内存管理机制
内存管理是C++最令人切齿痛恨的问题,也是C++最有争议的问题,C++高手从中获得了更好的性能,更大的自由,C++菜鸟的收获则是一遍一遍的检查代码和对C++的痛恨,但内存管理在C++中无处不在,内存泄漏几乎在每个C++程序中都会发生,因此要想成为C++高手,内存管理一关是必须要过的,除非放弃C++,转到Java或者.NET,他们的内存管理基本是自动的,当然你也放弃了自由和对内存的支配权,还放弃了C转载 2012-06-14 09:23:05 · 2671 阅读 · 0 评论 -
C#调用托管dll
在c#工程中右键项目选择添加引用导入dll文件,在代码中用using 包含或者直接new一个对象(该对象为dll中的类)例子:dll工程代码:using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace TestDll{ public原创 2012-04-23 16:58:02 · 376 阅读 · 0 评论 -
QString 十六进制数
在QT QString可以和一个十六进制数相加,但输出的时候只输出字符串,但十六进制数也有体现在输出里面,只是看不见如下: QString str = "test"+QString(0x1C); // 注意0x1C中c必须大写,否则会报错,或者这样QString("\x1c")也可以 qDebug() output:test可以通过这样看出test后面是有东西的原创 2012-04-20 17:07:54 · 1674 阅读 · 0 评论 -
Qhash
本文介绍的是Qt QHash 和QMap的区别,关于容器类可以查阅更多的资料,首先我们先把QHash和QMap区分开来。内容如下。QMap提供了一个从类项为key的键到类项为T的直的映射,通常所存储的数据类型是一个键对应一个直,并且按照Key的次序存储数据,这个类也支持一键多值的情况,用类QMultiMapQHash具有和QMap几乎完全一样的APi,此类维护这一张哈希表,表的大小和数转载 2012-04-20 14:25:22 · 4948 阅读 · 0 评论 -
堆和栈的区别
堆和栈的区别一、预备知识—程序的内存分配一个由c/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。3、全局区(静态转载 2012-04-20 14:41:25 · 364 阅读 · 0 评论 -
QT线程类
Qt 包含下面一些线程相关的类: QThread 提供了开始一个新线程的方法 QThreadStorage 提供逐线程数据存储 QMutex 提供相互排斥的锁,或互斥量 QMutexLocker 是一个便利类,它可以自动对QMutex加锁与解锁 QReadWriterLock 提供了一个可以同时读操作的锁 QReadLocker与QWriteLocker 是便利类,它自动转载 2012-04-20 14:13:18 · 558 阅读 · 0 评论 -
C++运算符优先级
C++运算符优先级PrecedenceOperatorDescriptionExampleAssociativity1()[]->.::++--Grouping operatorArray accessMember access from a pointerMember access from an obj转载 2012-05-02 09:05:18 · 257 阅读 · 0 评论 -
托管对象引用问题
在c++中,如果要将参数作为函数返回内容,可以用引用&实现而在托管代码中,怎样实现这样呢?在托管中, 托管对象用^符号标示,引用则用 % 符号标示,这相当于非托管中的 &例如:void test(String ^%str){ str = "after";}原创 2012-04-25 11:06:00 · 274 阅读 · 0 评论 -
Marshal::StringToHGlobalAnsi 方法
将托管 String 中的内容复制到非托管内存,并在复制时转换为 ANSI 格式。命名空间: System.Runtime.InteropServices程序集: mscorlib(在 mscorlib.dll 中) 异常条件OutOfMemoryException没有足够的可用内存。 ArgumentOutOfRan原创 2012-04-25 09:47:12 · 2201 阅读 · 0 评论 -
static_cast、dynamic_cast、reinterdivt_cast、和const_cast
使用标准C++的类型转换符:static_cast、dynamic_cast、reinterdivt_cast、和const_cast。3.1 static_cast用法:static_cast ( exdivssion )该运算符把exdivssion转换为type-id类型,但没有运行时类型检查来保证转换的安全性。它主要有如下几种用法:①用于类层次结构中基类和子类之间指针转载 2012-04-20 13:53:38 · 232 阅读 · 0 评论 -
IntPtr使用
IntPtr用于表示指针或句柄的平台特定类型,此类型对多线程操作是安全的。C#中的IntPtr类型称为“平台特定的整数类型”,它们用于本机资源,如窗口句柄。资源的大小取决于使用的硬件和操作系统,但其大小总是足以包含系统的指针(因此也可以包含资源的名称)。 所以,在调用的API函数中一定有类似窗体句柄这样的参数,那么当声明这个函数时,应该将它显式地声明为IntPtr类型。 IntPtr 类型被转载 2012-04-25 09:36:20 · 436 阅读 · 0 评论 -
gcnew 和new的区别
浅议C /CLI的gcnew关键字C /CLI中使用gcnew关键字表示在托管堆上分配内存,并且为了和以前的指针区分,用^来替换* ,就语义上来说他们的区别大致如下: 1. gcnew返回的是个句柄(Handle),而new返回的是实际的内存地址. 2. gcnew创建的对象由虚拟机托管,而new创建的对象必须自己来管理和释放. 当然,从程式员的角度来说转载 2012-04-25 08:42:49 · 2170 阅读 · 0 评论 -
qobject_cast
QPushButton *button_tmp=qobject_cast(sender());当某一个Object emit一个signal的时候,它就是一个sender,系统会记录下当前是谁emit出这个signal的,所以你在对应的slot里就可以通过 sender()得到当前是谁invoke了你的slot,对应的是QObject->d->sender.有可能多个 Object的s转载 2012-04-23 13:55:19 · 1308 阅读 · 0 评论 -
设置MFC MDI窗口框架的背景颜色
由于MDI框架的客户区被另一个窗口的框架所覆盖,为了改变客户区的背景色,需要重画这个客户窗口,这里所用到的技术叫子类化。具体方法如下: 第一步:从CWnd继承第一个类CMDIClient ,并添加WM_ERASEBKND消息函数代码。 ////////////////////////////////////////////////////////////////////////原创 2012-12-04 11:12:48 · 1249 阅读 · 0 评论