18 whgyyx

尚未进行身份认证

我要认证

写好程序,爱好女人!

等级
TA的排名 16w+

COM组件设计与应用(二)

<br />COM组件设计与应用(二)<br />GUID 和 接口<br /><br />作者:杨老师<br />一、前言<br /><br />书接上回,话说在 doc(Word) 复合文件中,已经解决了保存 xls(Excel) 数据的问题了。那么,接下来又要解决另一个问题:当 WORD 程序读取复合文件,遇到了 xls 数据的时候,它该如何启动 Excel 呢?启动后,又如何让 Excel 自己去读入、解析、显示 xls 数据呢?<br /><br />二、CLSID 概念<br /><br /> 

2011-03-03 14:47:00

COM 组件设计与应用(一)

<br />COM 组件设计与应用(一)<br />起源及复合文件<br /><br />作者:杨老师<br />一、前言<br /><br />  公元一九九五年某个夜黑风高的晚上,我的一位老师跟我说:“小杨呀,以后写程序就和搭积木一样啦。你赶快学习一些OLE的技术吧......”,当时我心里就寻思 :“开什么玩笑?搭积木方式写程序?再过100年吧......”,但作为一名听话的好学生,我开始在书店里“踅摸”(注1)有关OLE的书籍(注2)。功夫不负有心人,终于买到了我的第一本COM书《OLE2 高级编程

2011-03-03 14:46:00

COM:IUnknown、IClassFactory、IDispatch

<br />COM组件有三个最基本的接口类,分别是IUnknown、IClassFactory、IDispatch。 <br />COM规范规定任何组件、任何接口都必须从IUnknown继承,IUnknown包含三个函数,分别是 QueryInterface、AddRef、Release。这三个函数是无比重要的,而且它们的排列顺序也是不可改变的。QueryInterface用于查询组件实现的其它接口,说白了也就是看看这个组件的父类中还有哪些接口类,AddRef用于增加引用计数,Release用于减少引用计数

2011-03-03 12:31:00

MFC 程序员的 WTL 教程(一)- ATL 中的 GUI 类

<br />第一部分 - ATL 中的 GUI 类 <br /> <br />下载示例工程 - 24K本章内容README.TXT本系列介绍第一部分介绍ATL 背景知识ATL 和 WTL 的历史ATL 风格的模板ATL 窗口类定义窗口实现填充消息映射高级消息映射链和嵌入(Mix-in)类ATL EXE 的结构ATL 中的对话框就要到 WTL 了,我保证!修订历史README.TXT<br />在继续或者在本文的讨论板块中发布帖子之前,我希望你能先阅读以下内容。 <br />你需要有 Platform SDK

2011-03-02 13:06:00

VC 实现 自绘 窗体 标题栏 非客户区

<br />2007年08月23日 星期四 上午 09:35本程序在VC03测试成功,效果, 图片素材:从BC1.bmp到第2页的UR_N.bmp<br />1.准备工作。<br />(1)得到文件夹中的位图句柄:<br />首先要准备相应图片。<br />HBITMAP bitmap;<br />bitmap=(HBITMAP)::LoadImage(AfxGetInstanceHandle(),<br />    "skin//Test.bmp",<br />    IMAGE_BITMAP,<br /

2011-02-25 11:38:00

SQLite函数整理

SQLite包含了如下时间/日期函数:datetime().......................产生日期和时间date()...........................产生日期time()...........................产生时间strftime().......................对以上三个函数产生的日期和时间进行格式化datetime()的用法是:datetime(日期/时间,修正符,修正符...)date()和time()的语法与datetime()相同

2010-12-29 10:17:00

TCP连接探测中的Keepalive 和心跳包

<br />采用TCP连接的C/S模式软件,连接的双方在连接空闲状态时,如果任意一方意外崩溃、当机、网线断开或路由器故障,另一方无法得知TCP连接已经失效,除非继续在此连接上发送数据导致错误返回。很多时候,这不是我们需要的。我们希望服务器端和客户端都能及时有效地检测到连接失效,然后优雅地完成一些清理工作并把错误报告给用户。<br />如何及时有效地检测到一方的非正常断开,一直有两种技术可以运用。一种是由TCP协议层实现的Keepalive,另一种是由应用层自己实现的心跳包。<br />TCP默认并不开启Ke

2010-10-14 09:09:00

Boost源码剖析之:型别分类器——type_traits

<br />动机<br /><br />1. 分派<br /><br />下面有一个模板函数,假设一个动物收容组织提供了它,他们接受所有无家可归的可怜的小动物,于是他们向外界提供了一个函数接受注册。函数看起来像这样: template //T表示接受的是何种动物void AcceptAnimals(T animal){      ...  //do something};复制代码<br />但是,如果他们想将猫和狗分开处理(毕竟饲养一只猫和饲养一只狗并不相同。他们可能会为狗买一根链子,而温顺的猫则可能不需要

2010-09-07 11:36:00

Boost源码剖析之:泛型指针类any之海纳百川

<br />C++是强类型语言,所有强类型语言对型别的要求都是苛刻的,型别一有不合编译器就会抱怨说不能将某某型别转换为某某型别,当然如果在型别之间提供了转换操作符或是标准所允许的一定程度的隐式转换(如经过非explicit构造函数创建临时变量的隐式转换或是在int,long这些基本型别间的)又另当别论。总的说来,为了保持型别安全,C++有严厉的要求。然而有时候程序员可能有这样的需要: int i;iong j;X x; //假设X为用户定义的类any anyVal=i;... //use anyVal as

2010-09-07 11:35:00

Boost源码剖析之:容器赋值-assign

<br />相信大多数使用STL的人都是为了使用里面的容器,使用vector、list、map的程序员对以下代码可以说是非常熟悉了: vector i_v;i_v.push_back(1);i_v.push_back(2);i_v.push_back(3);i_v.push_back(4);i_v.push_back(5);复制代码<br />挺枯燥,是吧?用boost的assignment库可以让这一过程简洁得多: #include "boost/assign/std/vector.hpp"using n

2010-09-07 11:35:00

Boost源码剖析之:增强的std::pair--Tuple Types

<br />0 动机<br /><br />假设你有这样一个函数:它接受两个整型数据并返回它们整除的结果,像这样: int DevideInts(int n,int d){      return n/d;}复制代码<br />但是我们可能需要更多信息,比如,余数。函数的返回值已被占用,我们可以为函数加一个参数: int DevideInts(int n,int d,int& Remainder) {      Remainer=n%d;       return n/d;}复制代码<br />但是这样的函

2010-09-07 11:33:00

Visual C++线程同步技术剖析:临界区,时间,信号量,互斥量

<br />摘要: 多线程同步技术是计算机软件开发的重要技术,本文对多线程的各种同步技术的原理和实现进行了初步探讨。<br /><br />关键词: VC++6.0; 线程同步;临界区;事件;互斥;信号量;<br />正文<br /><br />使线程同步<br /><br />  在程序中使用多线程时,一般很少有多个线程能在其生命期内进行完全独立的操作。更多的情况是一些线程进行某些处理操作,而其他的线程必须对其处理结果进行了解。正常情况下对这种处理结果的了解应当在其处理任务完成后进行。<br /><br

2010-08-24 06:53:00

Windows数据类型探幽——千回百转你是谁?(4)

<br />最后这张表是Visual C++ 7.1编译器支持的数据类型,也就是Windows各种数据类型的“根源”了。 数据类型名称字节数别名取值范围int*signed,signed int由操作系统决定,即与操作系统的"字长"有关unsigned int*unsigned由操作系统决定,即与操作系统的"字长"有关__int81char,signed char–128 到 127__int162short,short int,signed short int–32,768 到 32,767__int32

2010-07-28 09:23:00

Windows数据类型探幽——千回百转你是谁?(3)

续表POINTER_32void *void *→POINTER_3232位指针(详解略)POINTER_64void *void *→POINTER_6464位指针(详解略)PSHORTshort *short→SHORT,SHORT *→PSHORTSHORT的指针PSTRchar *char→CHAR,CHAR *→PSTR8位Windows字符(ANSI)无终结字符串指针PTBYTEwchar_t *wchar_t→WCHAR,WCHAR *→PTBYTETBYTE的指针PTCHARwchar_t

2010-07-28 09:20:00

Windows数据类型探幽——千回百转你是谁?(2)

续表INTint*int→INT32位有符号整数INT_PTRint(_W64 int即__w64 int)*_W64 int→INT_PTR,_W64就是__w64,是为了解决32位与64位编译器的兼容性而设置的关键字用于指针运算INT32signed int*signed int→INT3232位有符号整数INT64signed __int648signed __int64→INT6464位有符号整数LANGIDunsigned short2unsigned short→WORD→LANGID语言标识符

2010-07-28 09:18:00

Windows数据类型探幽——千回百转你是谁?(1)

Windows Data TypesWindows数据类型   由微软Windows操作系统所支持的各种数据类型是用来定义函数的返回值、函数和消息的参数以及结构体成员(因为Win32程序是用C语言来编写,所以没有“类”这个概念)的。这些数据类型定义了上述元素的尺码(在内存中的,也就是占用内存的字节数)和含义。笔者以前一直不太注意这些东西,结果在程序设计时可谓步履维艰。不同类型的常/变量,在程序用扮演的角色相去甚远,了解这些类型,对剖析程序的工作原理是非常有用的。今天又是周末,我把这些类型列出来,然后把它们的

2010-07-28 09:15:00

TinyXML 指南

http://blog.chinaunix.net/u1/42517/showart_454387.html这是什么?本指南就如何有效的使用 TinyXML 提供一些窍门和建议。这里也会包括一些 C++ 的窍门,像如何在字符串和整数之间进行转换。这和 TinyXML 本身并没有任何关系,但是它会对你的工程有所帮助,所以我把它写了进来。如果你不知道 C++ 的基本概念,那么本指南对你没有任何用处。同样,如果你不知道 DOM 是什么,先在别的地方学习一下吧。开始之前一些 XML 数据集/文件将会被用到:exam

2010-06-28 10:56:00

2010年SQLite学习笔记之三(转载)

<br />一.如何备份数据库<br />先打开数据库test.db<br />E:/sqlite/tool/sqlite-3_6_22>sqlite3  D:/Test/debug/test.db<br />sqlite> .backup D://Test//debug//test.bak<br />注意:一定要用//双斜杠<br />二.如何恢复数据库<br />先打开数据库test.db<br />E:/sqlite/tool/sqlite-3_6_22>sqlite3  D:/Test/debug/

2010-06-21 11:32:00

2010年SQLite学习笔记之二(转载)

<br />一.建立数据库<br />sqlite3.exe test.db<br /> <br /><br />二.双击sqlite-3_6_16目录下的程序sqlite3.exe,即可运行<br />三.退出<br />.exit<br />或者<br />.quit<br /><br />四.SQLite支持如下5种数据类型<br />1.NULL:空值。<br />2.INTEGER:带符号的整型,具体取决有存入数字的范围大小。<br />3.REAL:浮点数字,存储为8-byte IEEE浮点数。

2010-06-21 11:31:00

2010年SQLite学习笔记之一(转载)

<br />一.            如何获取SQLite最新版本<br />官方站点:http://www.sqlite.org/<br />从http://www.sqlite.org/网站的Download页面获取<br />即如下页面下载<br />http://www.sqlite.org/download.html<br />二.Windows下的SQLite的源代码是哪个软件压缩包?<br />sqlite-amalgamation-3_6_22.zip是SQLite的windows下源码文

2010-06-21 11:30:00

查看更多

勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!