_variant_tの値をリストボックスに表示 – プログラミング – Home

_variant_tの値をリストボック...
 
通知
すべてクリア

[解決済] _variant_tの値をリストボックスに表示


キキ
 キキ
(@キキ)
ゲスト
結合: 22年前
投稿: 7
Topic starter  

開発環境は VC++.net 非MFC です。
XMLファイルから、必要な要素を取り出しリストボックスに表示するプログラムを
作っています。
↓のようにして取り出した要素を _variant_t に格納し、メッセージボックスに
表示することはできたのですが、リストボックスに表示する方法がわかりません。

pElemRoot->getElementsByTagName(BSTR(Lname), &pNodeList);
_variant_t varText[5];
for(i=0; i<5; i++)
{
pNodeList->get_item(i, &pNode1);
pNode1->get_firstChild(&pNode2);
pNode2->get_nodeValue(&varText[i]);
MessageBoxW(NULL, varText[i].bstrVal, L名前, MB_OK);
}

リストボックスへの表示方法を教えていただけないでしょうか。


引用未解決
トピックタグ
Blue
 Blue
(@Blue)
ゲスト
結合: 20年前
投稿: 1467
 

_bstr_t型をつかうと便利です。

で、リストボックスってどこにあるの?
コントロールIDもしくはウィンドウハンドルをはわかるのでしょうか?

リストボックスの作成も何もわからない場合
http://www.kumei.ne.jp/c_lang/index_sdk.html
の18章から21章あたりを参考にされるとよいでしょう。


返信引用
キキ
 キキ
(@キキ)
ゲスト
結合: 22年前
投稿: 7
Topic starter  

リストボックスはダイアログボックスプロシージャ内にあり、ウィンドウハンドル
は取得できています。
↓のコードで実行してみたのですが、文字化け(?)のように意味不明な文字列が
表示されてしまいます。

for(i=0; i<5; i++)
ListBox_AddString(hList1,verText[i].bstrVal);

_bstr_t型を使う場合は、_variant_t型から_bstr_t型へキャストすればいいのですか??


返信引用
Blue
 Blue
(@Blue)
ゲスト
結合: 20年前
投稿: 1467
 

>_bstr_t型を使う場合は、_variant_t型から_bstr_t型へキャストすればいいのです
か??
おそらくそれでも出来ます。

ListBox_AddString(hList1, _bstr_t(verText[i].bstrVal));

でもいけます。

_bstr_tクラスには operator const char* があるため、うまいことキャストできるよう
になっています。

また、MessageBoxWのように、

SendMessageW(hList1, LB_ADDSTRING, 0L, (LPARAM)verText[i].bstrVal);

明にワイド文字列を渡しても、いけるはず。


返信引用
Blue
 Blue
(@Blue)
ゲスト
結合: 20年前
投稿: 1467
 

>おそらくそれでも出来ます。
違った。
_bstr_tにキャストするならば、verText[i].bstrValをキャストするということでした。

ListBox_AddString(hList1, (_bstr_t)verText[i].bstrVal);

ということ。


返信引用
キキ
 キキ
(@キキ)
ゲスト
結合: 22年前
投稿: 7
Topic starter  

Blueさんありがとうございました。

ListBox_AddString(hList1, (_bstr_t)verText[i].bstrVal);

で実行したところ、リストボックスに文字化けせず、正しく表示することが
できました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました