- 博客(30)
- 收藏
- 关注
原创 设置MFC MDI窗口框架的背景颜色
由于MDI框架的客户区被另一个窗口的框架所覆盖,为了改变客户区的背景色,需要重画这个客户窗口,这里所用到的技术叫子类化。具体方法如下: 第一步:从CWnd继承第一个类CMDIClient ,并添加WM_ERASEBKND消息函数代码。 ////////////////////////////////////////////////////////////////////////
2012-12-04 11:12:48 1234
转载 c+内存管理机制
内存管理是C++最令人切齿痛恨的问题,也是C++最有争议的问题,C++高手从中获得了更好的性能,更大的自由,C++菜鸟的收获则是一遍一遍的检查代码和对C++的痛恨,但内存管理在C++中无处不在,内存泄漏几乎在每个C++程序中都会发生,因此要想成为C++高手,内存管理一关是必须要过的,除非放弃C++,转到Java或者.NET,他们的内存管理基本是自动的,当然你也放弃了自由和对内存的支配权,还放弃了C
2012-06-14 09:23:05 2644
转载 object c++类别
类别类别是一种为现有的类添加新方法的方式。利用Objective-C的动态运行时分配机制,可以为现有的类添加新方法,这种为现有的类添加新方法的方式称为类别catagory,他可以为任何类添加新的方法,包括那些没有源代码的类。类别使得无需创建对象类的子类就能完成同样的工作一、创建类别1、声明类别声明类别与声明类的形式很相似@interface NSString(Nu
2012-05-10 09:27:09 484
转载 initWithFormat 和stringWithFormat的区别
差别:1、initWithFormat是实例办法只能经由过程 NSString* str = [[NSString alloc] initWithFormat:@"%@",@"Hello World"] 调用,然则必须手动release来开释内存资料2、stringWithFormat是类办法可以直接用 NSString* str = [NSString strin
2012-05-09 15:35:47 5617 2
转载 C++运算符优先级
C++运算符优先级PrecedenceOperatorDescriptionExampleAssociativity1()[]->.::++--Grouping operatorArray accessMember access from a pointerMember access from an obj
2012-05-02 09:05:18 250
原创 托管对象引用问题
在c++中,如果要将参数作为函数返回内容,可以用引用&实现而在托管代码中,怎样实现这样呢?在托管中, 托管对象用^符号标示,引用则用 % 符号标示,这相当于非托管中的 &例如:void test(String ^%str){ str = "after";}
2012-04-25 11:06:00 266
原创 Marshal::StringToHGlobalAnsi 方法
将托管 String 中的内容复制到非托管内存,并在复制时转换为 ANSI 格式。命名空间: System.Runtime.InteropServices程序集: mscorlib(在 mscorlib.dll 中) 异常条件OutOfMemoryException没有足够的可用内存。 ArgumentOutOfRan
2012-04-25 09:47:12 2175
转载 IntPtr使用
IntPtr用于表示指针或句柄的平台特定类型,此类型对多线程操作是安全的。C#中的IntPtr类型称为“平台特定的整数类型”,它们用于本机资源,如窗口句柄。资源的大小取决于使用的硬件和操作系统,但其大小总是足以包含系统的指针(因此也可以包含资源的名称)。 所以,在调用的API函数中一定有类似窗体句柄这样的参数,那么当声明这个函数时,应该将它显式地声明为IntPtr类型。 IntPtr 类型被
2012-04-25 09:36:20 430
转载 gcnew 和new的区别
浅议C /CLI的gcnew关键字C /CLI中使用gcnew关键字表示在托管堆上分配内存,并且为了和以前的指针区分,用^来替换* ,就语义上来说他们的区别大致如下: 1. gcnew返回的是个句柄(Handle),而new返回的是实际的内存地址. 2. gcnew创建的对象由虚拟机托管,而new创建的对象必须自己来管理和释放. 当然,从程式员的角度来说
2012-04-25 08:42:49 2159
转载 qt 事件机制
什么是自发事件?哪些类型的事件可以被propagated 或compressed? posting and sending 事件之间有何不同?什么时候应该调用 accept() 或是ignore() ? 如果这些问题你还不是很了解,那么继续看下去。事件起源:基于事件如何被产生与分发,可以把事件分为三类:* Spontaneous 事件,由窗口系统产生,它们被放到系统队列中,通过
2012-04-24 09:19:38 2726 1
原创 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 370
转载 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 1302
原创 QString 十六进制数
在QT QString可以和一个十六进制数相加,但输出的时候只输出字符串,但十六进制数也有体现在输出里面,只是看不见如下: QString str = "test"+QString(0x1C); // 注意0x1C中c必须大写,否则会报错,或者这样QString("\x1c")也可以 qDebug() output:test可以通过这样看出test后面是有东西的
2012-04-20 17:07:54 1667
转载 堆和栈的区别
堆和栈的区别一、预备知识—程序的内存分配一个由c/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。3、全局区(静态
2012-04-20 14:41:25 358
转载 Qhash
本文介绍的是Qt QHash 和QMap的区别,关于容器类可以查阅更多的资料,首先我们先把QHash和QMap区分开来。内容如下。QMap提供了一个从类项为key的键到类项为T的直的映射,通常所存储的数据类型是一个键对应一个直,并且按照Key的次序存储数据,这个类也支持一键多值的情况,用类QMultiMapQHash具有和QMap几乎完全一样的APi,此类维护这一张哈希表,表的大小和数
2012-04-20 14:25:22 4943
转载 QT线程类
Qt 包含下面一些线程相关的类: QThread 提供了开始一个新线程的方法 QThreadStorage 提供逐线程数据存储 QMutex 提供相互排斥的锁,或互斥量 QMutexLocker 是一个便利类,它可以自动对QMutex加锁与解锁 QReadWriterLock 提供了一个可以同时读操作的锁 QReadLocker与QWriteLocker 是便利类,它自动
2012-04-20 14:13:18 553
转载 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 228
转载 appwidget
什么是AppWidget?AppWidget就是我们平常在桌面上见到的那种一个个的小窗口,利用这个小窗口可以给用户提供一些方便快捷的操作。本篇打算从以下几个点来介绍AppWidget: 1.如何创建一个简单的AppWidget 2.如何使得AppWidget与客户端程序交互创建简单的AppWidget 在介绍之前给大家看一下程序运行的最后
2012-04-18 17:03:28 231
原创 AutoCompleteTextView
创建步骤:1 . 在布局文件中添加AutoCompleteTextView标签 android:id="@+id/complete" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginLeft="5dp" />2 . 为AutoCo
2012-04-18 10:49:36 217
原创 DatePickerDialog
package page.datePicker;import android.app.Activity;import android.app.DatePickerDialog;import android.app.Dialog;import android.os.Bundle;import android.view.View;import android.widget.Bu
2012-04-18 10:11:13 196
转载 TabActivity
TabActivity & TabHost tabActivity继承自Activity,其内部定义好了TabHost,可以通过getTabHost()获取。TabHost 包含了两种子元素:一些可以自由选择的Tab 和tab对应的内容tabContentto,在Layout的下它们分别对应 TabWidget和FrameLayout。 使用TabActivity可以让同一个界面容纳更
2012-04-16 09:59:36 190
转载 Content Provider
Android中的Content provider机制可支持在多个应用中存储和读取数据。这也是跨应用共享数据的唯一方式。在android系统中,没有一个公共的内存区域,供多个应用共享存储数据。Android提供了一些主要数据类型的Content provider,比如音频、视频、图片和私人通讯录等。可在android.provider包下面找到一些android提供的Content provi
2012-04-12 10:35:21 298
原创 Android 使用http协议下载文件
1. 创建HttpURLConnection对象 HttpDownloader downloader = new HttpDownloader(); 2.获得一个InputStream对象 3.访问网络,在Manifest.xml声明:androi.permission.INTERNEThttp://schemas.android.com/apk/res/andr
2012-04-12 10:31:53 12947
转载 JAVA中extends 与implements区别
2011-07-30 12:48 JAVA中extends与implements有啥区别?1. 在类的声明中,通过关键字extends来创建一个类的子类。一个类通过关键字implements声明自己使用一个或者多个接口。extends 是继承某个类, 继承之后可以使用父类的方法, 也可以重写父类的方法; implements 是实现多个接口, 接口的方法一般为空
2012-04-12 09:14:31 761
原创 SQLite使用
1.创建SQLiteOpenHelper对象,通过SQLiteOpenHelper对象调用getReadableDatabase(),getWritableDatabase()方法获得(或创建)可读,可写的数据库对象 DataBaseHelper databaseHelper = new DataBaseHelper(SQLiteActivity.this,"Test_create_d
2012-04-11 18:00:16 227
转载 handler 入门
一、Handler的定义: 主要接受子线程发送的数据, 并用此数据配合主线程更新UI. 解释: 当应用程序启动时,Android首先会开启一个主线程 (也就是UI线程) , 主线程为管理界面中的UI控件,进行事件分发, 比如说, 你要是点击一个 Button, Android会分发事件到Button上,来响应你的操作。 如果此时需要一个耗时的操作,例如
2012-04-11 15:43:32 177
原创 handler(一)
handler的post方法直接调用线程对象的run方法,并没有开启新的进程,也就是说用这种方式调用的话,handler的线程和activity的线程是同一个。如果想使handler和activity运行在不同的线程中,解决办法是: HandlerThread handlerThread = new HandlerThread("handler_thread"); //先生
2012-04-11 15:41:11 199
原创 Style窗口
在android中,要是TextView是一种窗口形式,则需要在AndroidManifest.xml注册activity的时候加一个语句: android:theme="@android:style/Theme.Dialog">
2012-04-10 15:12:14 178
转载 Spinner
下拉列表 spinner(android)下拉列表 spinner,这个使用很简单,在 xml 中定义一个标签,然后指定 ArrayAdapter 就可以了,Adapter 需要指定下拉的布局。关于下拉的数据,书中是写用静态数组,我这里改成了从资源文件中读取java 代码package zziss.android.spinnerTest;import j
2012-04-10 09:36:36 244
原创 CharSequence
在Android中,两个字符串相连接时,如果第一个第一个地字符串是引用string.xml的值时需要CharSequence转换,不然输出的第一个字符串就是就是一个数值如: CharSequence m_str = getString(R.string.hello); myTextView.setText(m_str+" Text" );正常输出
2012-04-10 09:32:57 523
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人