====为Regular DLL工程加入ATL/WTL支持===========================
1.在工程的stdafx.h中除去#include <windows.h>,加上
#include <atlbase.h>
#include <atlapp.h>
extern CComModule _Module;或extern CAppModule _Module;
2.在工程主cpp(即main所处的文件中加入:
CComModule _Module; 或CAppModule _Module;
3.在main入口中模块加载处加入:
_Module.Init(NULL, HINSTANCE(hModule));
4.在main入口模块撤载处加入
_Module.Term();
====为VC6 ATL DLL工程加入WTL支持==============================
1.在工程的stdafx.h中的加上
#include <atlapp.h>
将extern CComModule _Module;改为extern CAppModule _Module;
2.在工程主cpp,即main所处的文件中改为:
CAppModule _Module;
====为VC.NET2003 ATL工程工程加入WTL支持==============================
1.在工程的stdafx.h的#include <atlbase.h>后
加入#include <atlapp.h>
去掉#include <atltypes.h>
================================
===== 为WTL加 Com 对象
1.创建一个同名ATL COM工程
2.将其idl和rgs文件复制加入到现有工程
3.在主cpp上加:
#include "initguid.h"
#include "XXX.h"
#include "XXX_i.c"
4.加入
BEGIN_OBJECT_MAP(ObjectMap)
END_OBJECT_MAP()
====为将MFC工程加入ATL/WTL支持==============================
1.在工程的stdafx.h中尾部加入
#define _WTL_NO_AUTOMATIC_NAMESPACE
#include <atlbase.h>
#include <atlapp.h>
extern WTL::CAppModule _Module;
2.在工程theApp声明下加入:
WTL::CAppModule _Module;
3.在InitInstance中部加入
_Module.Init(NULL, theApp.m_hInstance);
4.在ExitInstance中加入
_Module.Term();
====编译器技巧=================
====import语法========================
#pragma message ("TODO: Add the path to <Oledb32.dll>, and <Msado15.dll> via Tools->Options->Directories->Include Files. This is usually <C:\\Program Files\\Common Files\\system\\ole db\\>, and <C:\\Program Files\\Common Files\\system\\ado\\>, respectively.")
#import "C:\Program Files\Common Files\system\ole db\Oledb32.dll" raw_interfaces_only exclude("IDBPromptInitialize", "IDataInitialize") no_auto_exclude
#import "C:\Program Files\Common Files\system\ado\Msado15.dll" rename("EOF", "adoEOF") rename("BOF", "adoBOF")
#import <MsFlxGrd.ocx> raw_interfaces_only
====Select 模板技巧=================
对于在编译时有两种可能的语法,其中一种为错误,可使用Select编译时模板技巧排除,否则编译器同时测试两种语法导致编译错误.
====stlport安装==========================
1. 下载http://stlport.org/archive/STLport-4.5.3.zip及http://linghuye.nease.net/Tools/stlp45andvc71.zip
2. 分别解压,并使用第2个压缩包内的文件:
a.替换文件 STLport-4.5.3/stlport/config/stl_msvc.h
b.添加文件 STLport-4.5.3/src/vc71.mak
3. 在VS2003的"包含文件目录"中加入STLport-4.5.3/stlport路径,并移至最优先上方.
4. 不欲使用STLport iostreams者,去除stlport/stl_user_config.h文件中"//# define _STLP_NO_OWN_IOSTREAMS 1"行前的"//".
欲使用STLport iostreams者,
a.将vc6.mak改名为makefile
b.在Visual Studio .NET 2003 命令提示环境中,进入src目录
nmake clean all
nmake install
====指针应用===============================
指针一律初始化NULL,一律delete,因为NULL删除不出错.
====CSrollWindowImpl应用============================
1.继承于CSrollWindowImpl
2.将OnPaint消息传给CSrollWindowImpl处理.
3.在OnCreate中SetScrollSize.
3.编写void DoPaint(CDCHandle dc)
====C库冲突===========================
对于引入的C库由于LibC的各种冲突,应在链接设置中忽略LIBCXX.lib.
====mtl vc7.1安装===========================
覆盖补丁mtl_vc71patch.rar即可.
=============================
如果没有实践上的实例证明效率问题,则易用性最重要.
推论:最初的设计应以易用性为主.
====SOAP使用===================
1.客户端必须安装Soap发布包,否则失败.
'建立Soap客户端连接
Set SoapClient = CreateObject("MSSOAP.SoapClient")
'与服务器公开的WebService服务进行连接,只需一个暴露出来的WSDL文件
'由于WSDL文件在虚拟目录中,外部网络可以直接读取它.
Call SoapClient.mssoapinit("http://localhost/WebServices/WebCam/WebCam.WSDL"; )
'直接用soapclient调用COM方法,soapclient此时代表无状态的WenCam对象代理,方法调用同一般的COM调用.
'[out,retval]参数结果直接出现在返回值obj中.
Set obj = SoapClient.GrabFrame(10)
2.服务器端必须安装Soap Tookit包.
a.暴露WSDL文件,在计算机管理->默认网站->新建->虚拟目录. 如上情况必须建两层WebServices/WebCam
将WebCam.WSDL和WebCam.wsml放入虚拟目录WebCam映射到的硬盘目录下(一般也建在wwwroot下).
b.由于微软IIS的一些低级Bug,必须重设WSDL执行映射:
在计算机管理中点击你的虚拟目录如WebCam的属性,点击右下的配置按钮,->添加->扩展名填".wsdl"(不填双引号).
动作选"限制为",并填入GET,POST,HEAD,打勾"教本引擎",去勾"检查文件存在".
最后可执行文件填入: C:\Progra~1\Common~1\MSSoap\Binaries\SOAPISAP.dll
C:为系统盘,切记千万不要用"浏览"按钮来设,有Bug,而且以上路径不能用长文件路径名.
4.客户端不需要安装dll,服务器端必须注册.
=========================================
#include <ft2build.h>
#include FT_FREETYPE_H
<ft2build.h>对FT_FREETYPE_H做了宏定义.