COM的C++实现
摘要:把类的公共方法提取出来成为一个抽象基类,这就是接口即接口是对外的部分,继承接口的类是实现部分接口的唯一目的是强制派生类以虚函数的方式实现组件接口的方法接口完整的描述了C++中Vtable的布局COM只能通过一个Vtable指针来提供对它组件的访问,对组件实现的访问是不能的COM的核心概念----通过...
阅读全文
posted @
2014-05-31 16:25
aoun
阅读(1624)
推荐(0)
ATL
摘要:(1)ATL如何使用模板类 1 #include 2 using namespace std; 3 4 class CBase 5 { 6 public: 7 CBase(){} 8 ~CBase(){} 9 10 void BaseMethod()11 {12 ...
阅读全文
posted @
2014-05-29 21:26
aoun
阅读(232)
推荐(0)
template
摘要:模板在类级别提供了一种编译时替换机制继承和模板都是创建可复用类的好方法
阅读全文
posted @
2014-05-29 21:08
aoun
阅读(170)
推荐(0)
VARIANT
摘要:VARIANT辅助函数VariantChangeTypeVariantInitVariantCopyVariantCopyIndVariantClear 1 if (varOp1.vt == VT_BSTR && varOp2.vt == VT_BSTR) 2 { 3 VariantInit...
阅读全文
posted @
2014-05-29 14:28
aoun
阅读(512)
推荐(0)
IDispatch
摘要:BOOL VARIANTToDouble(VARIANTARG * pVarSrc, double * pd){ VARIANTARG dest; VARIANTINIT(&dest); HRESULT hr = VariantChangeType(pVarSrc, dest, 0...
阅读全文
posted @
2014-05-29 13:39
aoun
阅读(170)
推荐(0)
DLL
摘要:1 typedef IUnknown * (* CREATEFUNCPTR)(); 2 3 IUnknown * CallCreateInstance(char * name) 4 { 5 HINSTANCE hComponent = ::LoadLibrary(name); 6 ...
阅读全文
posted @
2014-05-27 15:25
aoun
阅读(165)
推荐(0)
COM组件
摘要:没有动态链接的组件,就相当与没有装备的消防员对组件生命周期的管理是通过接口引用计数来实现的,在实现IUnknown之后组件和客户之间非常松散的连接DLL相当于一个组件服务器CLSID 组件ID (类标识符)ProgID 是coder给CLSID指定的一个易于记住的名字COM库的初始化一般只在EXE中...
阅读全文
posted @
2014-05-27 15:18
aoun
阅读(592)
推荐(0)
线程同步
摘要:win32可以使用InterlockedIncrementInterlockedDecrement来使同一时间只有一个线程在访问变量 1 ULONG _stdcall CA::AddRef() 2 { 3 return InterlockedIncrement(&m_ref); 4 } 5 ...
阅读全文
posted @
2014-05-27 15:05
aoun
阅读(134)
推荐(0)
QueryInterface
摘要:1 // 08win32console-ATL.cpp : 定义控制台应用程序的入口点。 2 // 3 4 5 #include "stdafx.h" 6 #include 7 #include 8 9 using std::cout; 10 using std::en...
阅读全文
posted @
2014-05-27 14:14
aoun
阅读(559)
推荐(0)
BitBlt 和 stretchBlt
摘要:StretchBlt可以缩放、翻转图像Bitblt只是简单的图像拷贝
阅读全文
posted @
2014-05-26 22:49
aoun
阅读(230)
推荐(0)
com接口
摘要:1 interface IUnknown2 {3 virtual HRESULT __stdcall QueryInterface(const IID & iid, void ** ppv) = 0;4 virtual ULONG _stdcall AddRef() = 0;5 ...
阅读全文
posted @
2014-05-22 10:30
aoun
阅读(388)
推荐(0)
com
摘要:COMComponent Object Model (组件对象模型)在二进制级别上进行集成和重用的软件单元在同一软件中的组件必须使用相同的接口标准,组件之间才能相互通信访问COM对象的唯一途径是通过COM接口接口是一组调用函数,也是客户程序和组件之间的协议核心接口--IUnknownCOM 是C/S...
阅读全文
posted @
2014-05-21 23:01
aoun
阅读(409)
推荐(0)
aoun
摘要:一个人的气质,并不在容颜和身材,而是所经历过的往事,是内在留下的印迹,令人深沉而安谧。所以,优雅不是装扮出来的,而是一种阅历的凝聚;淡然不是伪装出来的,而是一段人生的沉淀。时间会让一颗灵魂,变得越来越动人。
阅读全文
posted @
2014-05-19 21:18
aoun
阅读(258)
推荐(0)
Linux启动
摘要:BIOS -> MBR -> boot loader -> kernel加电->主板BIOS(允许从光盘、USB和硬盘来启动计算机)->读取所选存储器的头512 bytes(MBR),MBR告诉电脑从某一分区加载boot loader->boot loader存储有关OS的信息,比如系统版本,ker...
阅读全文
posted @
2014-05-17 10:52
aoun
阅读(127)
推荐(0)
MFC的基类
摘要:CWnd提供窗口处理的一个类,里面有HWND m_hWnd成员CDC绘图类,所有和绘图有关的操作封装在这个类,CClientDC, CWindowDC皆派生自它,里面有m_nHdc成员
阅读全文
posted @
2014-05-17 00:55
aoun
阅读(343)
推荐(0)
调用约定
摘要:调用约定(Calling convention)决定以下内容:函数参数的压栈顺序,由调用者还是被调用者把参数弹出栈,以及产生函数修饰名的方法。最常用的两种 Calling convention:① _cdecl 按从右至左的顺序压参数入栈,由调用者把参数弹出栈。对于“C”函数或者变量,修饰名是在...
阅读全文
posted @
2014-05-17 00:22
aoun
阅读(153)
推荐(0)
VisualStudio快捷键
摘要:1.Ctrl+Enter 在上方插入一行2.Ctrl+Shift+Enter 在下方插入一行3.Ctrl+W 选中当前单词4.Ctrl+Delete 删除下一个单词5.Ctrl+Backspace 删除前一个单词6.Ctrl+L 剪切当前行7.Ctrl+Shift+L 删除当前行
阅读全文
posted @
2014-05-16 00:00
aoun
阅读(129)
推荐(0)
typedef
摘要:typedef 定义自定义类型,即为现有类型创建一个新的名字有助于创建平台无关类型, 隐藏复杂、难以理解的语法,即美化代码举例:1.template class A { typedef T value_type; ... };2.typedef struct _Node int ...
阅读全文
posted @
2014-05-15 23:50
aoun
阅读(118)
推荐(0)
C的继承和多态
摘要:person.h 1 // Base class 2 3 #pragma once 4 5 typedef struct _Person Person; 6 7 typedef void (*fptrDisplayInfo)(const Person *); 8 typedef void (*...
阅读全文
posted @
2014-05-14 17:29
aoun
阅读(167)
推荐(0)
内存泄露
摘要:以下摘自内存泄漏指由于疏忽或错误造成程序未能释放已经不再使用的内存的情况。内存泄漏并非指内存在物理上的消失,而是应用程序分配某段内存后,由于设计错误,导致在释放该段内存之前就失去了对该段内存的控制,从而造成了内存的浪费。内存分配要通过CRT在运行时实现,只要在分配内存和释放内存时分别做好记录,程序结...
阅读全文
posted @
2014-05-13 18:23
aoun
阅读(157)
推荐(0)
进程内存管理
摘要:以下摘自变量在内存中的布局可以总结为如下:变量(函数外):如果未初始化,则存放在BSS段;否则存放在data段变量(函数内):如果没有指定static修饰符,则存放在栈中;否则同上常量:存放在文本段.text函数参数:存放在栈或寄存器中内存可以分为以下几段:文本段:包含实际要执行的代码(机器指令)和...
阅读全文
posted @
2014-05-13 16:37
aoun
阅读(156)
推荐(0)
编译过程
摘要:以下摘自源文件经过以下几步生成可执行文件:1、预处理(preprocessor):对#include、#define、#ifdef/#endif、#ifndef/#endif等进行处理2、编译(compiler):将源码编译为汇编代码3、汇编(assembler):将汇编代码汇编为目标代码4、链接(...
阅读全文
posted @
2014-05-13 16:11
aoun
阅读(141)
推荐(0)
字符编码
摘要:计算机中储存的信息都是用二进制数表示的;而我们在屏幕上看到的英文、汉字等字符是二进制数转换之后的结果。字符集(Charset):是一个系统支持的所有抽象字符的集合。字符是各种文字和符号的总称,包括各国家文字、标点符号、图形符号、数字等。字符编码(Character Encoding):是一套法则,使...
阅读全文
posted @
2014-05-13 16:03
aoun
阅读(215)
推荐(0)
链表的简单实现
摘要:1 #include 2 #include 3 4 typedef struct node { 5 int data; 6 node * next; 7 }Node, *pNode; 8 9 pNode CreateList() {10 pNode head, p1...
阅读全文
posted @
2014-05-13 00:30
aoun
阅读(132)
推荐(0)
strcat strcpy strlen
摘要:1 char * strcat(char * dest, const char * src) { 2 assert(dest != NULL && src != NULL); 3 char * p = dest; 4 while (*p) 5 p++; 6 ...
阅读全文
posted @
2014-05-12 21:58
aoun
阅读(143)
推荐(0)
socket基础4
摘要:WSAAsyncSelect是与窗口句柄关联在一起的,必须要要窗口才行,而WSAEventSelect是与事件对象关联的。这个模型的基本思路是为感兴趣的一组网络事件创建一个事件对象,再调用WSAEventSelect函数将网络事件和事件对象关联起来。当网络事件发生时,winsock使响应的事件对象受...
阅读全文
posted @
2014-05-12 10:44
aoun
阅读(102)
推荐(0)
Socket基础3
摘要:网络层的“ip地址”可以唯一标识网络中的主机,而传输层的“协议+端口”可以唯一标识主机中的应用程序(进程)。这样利用三元组(ip地址,协议,端口)就可以标识网络的进程了,网络中的进程通信就可以利用这个标志与其它进程进行交互。Unix/Linux基本哲学之一就是“一切皆文件”,都可以用“打开open ...
阅读全文
posted @
2014-05-11 20:34
aoun
阅读(169)
推荐(0)
socket基础2
摘要:同步方式指的是发送方不等接收方响应,便接着发下个数据包的通信方式;而异步指发送方发出数据后,等收到接收方发回的响应,才发下一个数据包的通信方式。阻塞套接字是指执行此套接字的网络调用时,直到成功才返回,否则一直阻塞在此网络调用上,比如调用recv()函数读取网络缓冲区中的数据,如果没有数据到达,将一直...
阅读全文
posted @
2014-05-11 14:55
aoun
阅读(120)
推荐(0)
多线程
摘要:AfxBeginThread是MFC的全局函数,是对CreateThread的封装。CreateThread是Win32 API函数,前者最终要调到后者。_beginthread是C的运行库函数
阅读全文
posted @
2014-05-11 01:34
aoun
阅读(132)
推荐(0)
socket基础1
摘要:"阻塞"是一个术语,它使程序运行暂时"停留"在这个地方,直到一个会话产生,然后程序继续;通常"阻塞"是由循环产生的。对于一个网络连接来说,套接字是平等的,并没有差别,不因为在服务器端或在客户端而产生不同级别。套接字之间的连接过程可以分为三个步骤:服务器监听,客户端请求,连接确认。客户端不需要指定打开...
阅读全文
posted @
2014-05-11 00:19
aoun
阅读(112)
推荐(0)
default constructor
摘要:1 #include 2 #include 3 4 using namespace std; 5 6 class B { 7 public: 8 int b; 9 B() {b=2;}10 };11 12 class A {13 public:14 int a;15...
阅读全文
posted @
2014-05-06 18:59
aoun
阅读(142)
推荐(0)