亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

問津BSTR

系統 1924 0

COM 中除了使用一些簡單標準的數據類型外(注2),字符串類型需要特別重點地說明一下。還記得原則嗎? COM 組件是運行在分布式環境中的 。通俗地說,你不能直接把一個內存指針直接作為參數傳遞給COM函數。你想想,系統需要把這塊內存的內容傳遞到“地球另一 邊”的計算機上,因此,我至少需要知道你這塊內存的尺寸吧?不然讓我如何傳遞呀?傳遞多少字節呀?!而字符串又是非常常用的一種類型,因此 COM 設計者引入了 BASIC 中字符串類型的表示方式---BSTR。BSTR 其實是一個指針類型,它的內存結構是:(輸入程序片段 BSTR p = ::SysAllocString(L"Hello,你好");斷點執行,然后觀察p的內存)


圖二、BSTR 內存結構

  BSTR 是一個指向 UNICODE 字符串的指針,且 BSTR 向前的4個字節中,使用DWORD保存著這個字符串的字節長度( 沒有含字符串的結束符)。因此系統就能夠正確處理并傳送這個字符串到“地球另一 邊”了。特別需要注意的是,由于BSTR的指針就是指向 UNICODE 串,因此 BSTR 和 LPOLESTR 可以在一定程度上混用,但一定要注意:
  有函數 fun(LPCOLESTR lp),則你調用 BSTR p=...; fun(p); 正確
  有函數 fun(const BSTR bstr),則你調用 LPCOLESTR p=...; fun(p); 錯誤!!!
有關 BSTR 的處理函數:

API 函數 說明
SysAllocString() 申請一個 BSTR 指針,并初始化為一個字符串
SysFreeString() 釋放 BSTR 內存
SysAllocStringLen() 申請一個指定字符長度的 BSTR 指針,并初始化為一個字符串
SysAllocStringByteLen() 申請一個指定字節長度的 BSTR 指針,并初始化為一個字符串
SysReAllocStringLen() 重新申請 BSTR 指針

CString 函數

說明

AllocSysString() 從 CString 得到 BSTR
SetSysString() 重新申請 BSTR 指針,并復制到 CString 中

CComBSTR 函數

ATL 的 BSTR 包裝類。在 atlbase.h 中定義

Append()、AppendBSTR()、AppendBytes()、ArrayToBSTR()、BSTRToArray()、AssignBSTR()、Attach()、Detach()、Copy()、CopyTo()、Empty()、Length()、ByteLength()、ReadFromStream()、WriteToStream()、LoadString()、ToLower()、ToUpper()
運算符重載:!,!=,==,<,>,&,+=,+,=,BSTR
太多了,但從函數名稱不能看出其基本功能。詳細資料,查看MSDN 吧。另外,左側函數,有很多是 ATL 7.0 提供的,VC6.0 下所帶的 ATL 3.0 不支持。
由于我們將來主要用 ATL 開發組件程序,因此使用 ATL 的 CComBSTR 為主。VC也提供了其它的包裝類 _bstr_t。

問津BSTR


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 91久久精品一区二区三区 | 国产成人在线视频观看 | 好吊788gaoco | 一级毛片视频免费观看 | 99久久精品费精品国产一区二区 | 香港aa三级久久三级老师 | 国产成人啪午夜精品网站男同 | 久久精品是免费100 久久精品首页 | 日韩二三区 | 国产精品27页 | 免费99视频有精品视频高清 | 99久久免费精品 | 欧美国产亚洲精品a第一页 欧美国产亚洲精品高清不卡 | 一级特黄a视频 | 久久亚洲精品专区蓝色区 | 91视频首页 | 天天舔天天操天天干 | 亚洲精品天堂 | 亚洲最大激情网 | 成年女人a毛片免费视频 | 日韩欧美天堂 | 亚洲精品tv久久久久久久久 | 欧美日本另类xxx乱大交 | 四虎aⅴ| 国产高清在线精品 | 手机看片国产 | 福利视频免费 | 99热在线这里只有精品 | 不卡无毒免费毛片视频观看 | 欧美亚洲国产日韩一区二区三区 | 日本亚洲欧洲高清有码在线播放 | chinese在线播放91国内 | 成人午夜亚洲影视在线观看 | 91粉嫩萝控精品福利网站 | 91一区二区在线观看精品 | 久久精品综合免费观看 | 午夜精品成年片色多多 | 亚洲国产精品67194成人 | 亚洲国产精品第一区二区三区 | 永久福利视频 | 一区二区三区在线 |