自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(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关注的人

提示
确定要删除当前文章?
取消 删除