Skip to main content

VC知识库文章 - COM 组件设计与应用(三)——数

Popularity Report

Total Popularity Score: 0

Loading...
Loading...
Loading...
Loading...
Loading...
Loading...

Rank

Related Lists

Bookmark History

Saved by 3 people (1 private), first by anonymouse user on 2006-11-02


Public Sticky notes

COM组件设计与应用(三)
数据类型

Highlighted by yecheng_110

const char * p = "Hello"; // 使用 ASCII 字符集 > const char * p = "你好"; // 使用 MBCS 字符集,由于 MBCS 完全兼容 ASCII,多数情况下,我们并不严格区分他们 > LPCSTR p = "Hello,你好"; // 意义同上 > const WCHAR * p = L"Hello,你好"; // 使用 UNICODE 字符集 > LPCOLESTR p = L"Hello,你好"; // 意义同上 >

Highlighted by duchengecho

// 如果预定义了_UNICODE,则表示使用UNICODE字符集;如果定义了_MBCS,则表示使用 MBCS const TCHAR * p = _T("Hello,你好"); LPCTSTR p = _T("Hello,你好"); // 意义同上

Highlighted by duchengecho

T是非常有意思的一个符号(TCHAR、LPCTSTR、LPTSTR、_T()、_TEXT()...),它表示使用一种中间类型,既不明确表示使用 MBCS,也不明确表示使用 UNICODE。那到底使用哪种字符集那?嘿嘿......编译的时候决定吧。设置条件编译的方式是:VC6中,"Project\Settings...\C/C++卡片 Preprocessor definitions" 中添加或修改 _MBCS、_UNICODE;VC.NET中,"项目\属性\配置属性\常规\字符集"然后用组合窗进行选择。

Highlighted by duchengecho

BSTR 其实是一个指针类型 >

Highlighted by duchengecho

由于BSTR的指针就是指向 UNICODE 串,因此 BSTR 和 LPOLESTR 可以在一定程度上混用

Highlighted by duchengecho

有函数 fun(LPCOLESTR lp),则你调用 BSTR p=...; fun(p); 正确
  有函数 fun(const BSTR bstr),则你调用 LPCOLESTR p=...; fun(p); 错误!!!

Highlighted by duchengecho

AllocSysString() 从 CString 得到 BSTR SetSysString() 重新申请 BSTR 指针,并复制到 CString 中

Highlighted by duchengecho

USES_CONVERSION; // 只需要调用一次,就可以在函数中进行多次转换

Highlighted by duchengecho

用 VARIANT 表示一个4字节长的整数

Highlighted by duchengecho

VARIANT v; v.vt=VT_I4; v.lVal=100;

Highlighted by duchengecho

用 VARIANT 保存字符串

Highlighted by duchengecho

VARIANT v; v.vt=VT_BSTR; v.bstrVal=SysAllocString(L"Hello,你好");

Highlighted by duchengecho

CComVariant v1(100),v2(true),v3("Hello,你好")

Highlighted by duchengecho

    1、只适合于进行短字符串的转换;
    2、不要试图在一个次数比较多的循环体内进行转换;
    3、不要试图对字符型文件内容进行转换,因为文件尺寸一般情况下是比较大的;
    4、对情况 2 和 3,要使用 MultiByteToWideChar() 和 WideCharToMultiByte()

Highlighted by duchengecho

任何布尔类型的“假”都是0,因此作为一个好习惯,在做布尔判断的时候,不要和“真值”相比较,而要与“假值”做比较

Highlighted by duchengecho