討論區快速選單
知識庫快速選單
傑米的攝影旅遊筆記 政府補助!學嵌入式+物聯網 程式設計俱樂部Facebook粉絲團
[ 回上頁 ] [ 討論區發言規則 ]
請問有關 BSTR 在VC++ 中的問題
更改我的閱讀文章字型大小
作者 : kuolung(kuolung)
[ 貼文 150 | 人氣 1414 | 評價 130 | 評價/貼文 0.87 | 送出評價 39 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2016/8/24 下午 09:06:00
我有一個程式,在 tlh 中宣告為

    HRESULT OnNotifyKLineData (
     _bstr_t bstrStockNo,
     _bstr_t bstrData );

請問我想對應的程式要如何宣告

void CQuoteEvent::OnNotifyKLineData(
BSTR bstrStockNo,
BSTR bstrData)

在 DISPATCH_MAP 中我的宣告為

DISP_FUNCTION_ID(CQuoteEvent, "OnNotifyKLineData", 6, OnNotifyKLineData, VT_EMPTY, VTS_BSTR VTS_BSTR)

可是這樣有錯,無法收到 EVENT

請問如何解決
作者 : ozzy123(ozzy) 資訊類作業求救卓越專家C++卓越專家貼文超過4000則人氣指數超過30000點
[ 貼文 4466 | 人氣 37262 | 評價 10860 | 評價/貼文 2.43 | 送出評價 49 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
主題發起人kuolung註記此篇回應為很有道理 2016/8/25 下午 01:26:29
https://msdn.microsoft.com/zh-tw/library/95357zak.aspx
作者 : ozzy123(ozzy) 資訊類作業求救卓越專家C++卓越專家貼文超過4000則人氣指數超過30000點
[ 貼文 4466 | 人氣 37262 | 評價 10860 | 評價/貼文 2.43 | 送出評價 49 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
主題發起人kuolung註記此篇回應為很有道理 2016/8/25 下午 01:27:04
https://msdn.microsoft.com/zh-tw/library/95357zak.aspx
作者 : ozzy123(ozzy) 資訊類作業求救卓越專家C++卓越專家貼文超過4000則人氣指數超過30000點
[ 貼文 4466 | 人氣 37262 | 評價 10860 | 評價/貼文 2.43 | 送出評價 49 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2016/8/25 下午 02:28:14
using debugger to trace them step by step
作者 : kuolung(kuolung)
[ 貼文 150 | 人氣 1414 | 評價 130 | 評價/貼文 0.87 | 送出評價 39 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2016/8/25 下午 10:21:56
您給的那篇文章,也是談這個東西,有教到,我一直找不到達 MFC COM 的 WIZARD

但是並沒有解決我的問題

只證明說,我的方式應該沒有錯,
作者 : kuolung(kuolung)
[ 貼文 150 | 人氣 1414 | 評價 130 | 評價/貼文 0.87 | 送出評價 39 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2016/8/25 下午 10:28:41
因為是使用第三方提供的 COM DLL 元件,沒有原始碼,所以沒有辦法 用 Debug 的方式, trace step by step

倒是您提供的文件,讓我看到了,元件繼承了一堆 function 或許可以從中找出一點方式查問題點
作者 : ozzy123(ozzy) 資訊類作業求救卓越專家C++卓越專家貼文超過4000則人氣指數超過30000點
[ 貼文 4466 | 人氣 37262 | 評價 10860 | 評價/貼文 2.43 | 送出評價 49 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
主題發起人kuolung註記此篇回應為很有道理 2016/8/26 上午 09:02:27
ATL wizard , maybe it provides a way you wanna create a COM .
作者 : kuolung(kuolung)
[ 貼文 150 | 人氣 1414 | 評價 130 | 評價/貼文 0.87 | 送出評價 39 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2016/10/6 下午 05:19:03
您好,請問一下,我這個問題,我看到在 microsoft 的 Q181845 有提到相關的資料,
但是還是沒有提到如何解決 BSTR 的傳遞問題,
作者 : gmailjoey(建中) 貼文超過200則
[ 貼文 206 | 人氣 0 | 評價 190 | 評價/貼文 0.92 | 送出評價 13 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2016/10/6 下午 08:38:45
這個問題我以前在學校的筆記有記錄過,

提供Visual C++ 2005的做法給你參考!

首先多加一個標頭檔:

#include "COMDEF.H"

1.convert _bstr_t to BSTR

假設要轉換的內容是"ConvertMyString"

第一步先用一個等號把它存到_bstr_t 類別的tbstr參數裡面
(tbstr可以用自己定義成其他縮寫)

_bstr_t tbstr = "ConvertMyString";

這樣tbstr參數就把字串存進去了。

接著呼叫copy功能:

BSTR bstr = tbstr.copy();

就可以把bstr存到你要呼叫的函數裡面了。

但是要注意在程式結束的時候必須呼叫

SysFreeString(bstr);

這樣才會釋放bstr參數。

2. convert BSTR to _bstr_t

首先#include "COMDEF.H"

接下來要呼叫SysAllocString:
BSTR bstr = SysAllocString(L"ConvertMyString");//注意要加L
_bstr_t tbstr = bstr;

接下來就可以把tbstr存到你要呼叫的函數裡面了。

如果還有任何問題都歡迎留言哦。
作者 : gmailjoey(建中) 貼文超過200則
[ 貼文 206 | 人氣 0 | 評價 190 | 評價/貼文 0.92 | 送出評價 13 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
主題發起人kuolung註記此篇回應為很有道理 2016/10/7 下午 12:33:02
我剛剛看了一下網路,
國外的論壇說要加下面這兩個標頭檔:

#include <comdef.h>
#include <comutil.h> //新版Visual C++ 可能要再加這一行

請自行參考使用哦。
http://stackoverflow.com/questions/22986315/convert-from-bstr-to-char
作者 : kuolung(kuolung)
[ 貼文 150 | 人氣 1414 | 評價 130 | 評價/貼文 0.87 | 送出評價 39 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2016/11/30 上午 09:56:20
經過,幾個月的努力,終於把這個問題搞定了
作者 : sflam(Raymond)討論區板主 Visual C++ .NET卓越專家VC++一代宗師新手入門優秀好手資訊類作業求救頂尖高手C++一代宗師貼文超過4000則
[ 貼文 4945 | 人氣 9172 | 評價 32290 | 評價/貼文 6.53 | 送出評價 142 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2016/12/1 下午 10:34:45
>經過,幾個月的努力,終於把這個問題搞定了

恭喜. 請分享你的方法與結果, 讓後來的人有個方向.

 板主 : 青衫 , Raymond
 > Visual C++ - 討論區
 - 最近熱門問答精華集
 - 全部歷史問答精華集
 - Visual C++ - 知識庫
  ■ 全站最新Post列表
  ■ 我的文章收藏
  ■ 我最愛的作者
  ■ 全站文章收藏排行榜
  ■ 全站最愛作者排行榜
  ■  月熱門主題
  ■  季熱門主題
  ■  熱門主題Top 20
  ■  本區Post排行榜
  ■  本區評價排行榜
  ■  全站專家名人榜
  ■  全站Post排行榜
  ■  全站評價排行榜
  ■  全站人氣排行榜
 請輸入關鍵字 
  開始搜尋
 
Top 10
評價排行
Visual C++
1 青衫 11070 
2 Raymond 10090 
3 Clier 7630 
4 小約翰 2500 
5 Cog 2030 
6 coco 1870 
7 aming 1410 
8 牧童哥 1400 
9 r2109 1380 
10 Akira 1350 
Visual C++
  專家等級 評價  
  一代宗師 10000  
  曠世奇才 5000  
  頂尖高手 3000  
  卓越專家 1500  
  優秀好手 750  
Microsoft Internet Explorer 6.0. Screen 1024x768 pixel. High Color (16 bit).
2000-2018 程式設計俱樂部 http://www.programmer-club.com.tw/
0.171875