現在、通信プログラミングに挑んでいるものです。
そこで、通信してもらってきた文字列、ほとんどはホスト名なのですが、そのホスト名
をリストボックスに表示することができません。
何かいいアドバイスをお願いします。
VC++.net でWinAPIを使っています。OSはWindowsXPです。
まずは、問題の切り分けです。
その文字列をリストボックス以外になら表示できますか?
また、任意の文字(例えばABC)をリストボックスに表示することは出来ますか?
> そこで、通信してもらってきた文字列、ほとんどはホスト名なのですが、そのホスト名
> をリストボックスに表示することができません。
これだけでは、yuuさんのコードが間違っているであろうことしか分かりません。
> 何かいいアドバイスをお願いします。
正しいコードを書きましょう。
と、いうのは大人気ないですので、とりあえず、どのようなコードを書いたのかを
提示して下さい。
全てはそれからです。
>その文字列をリストボックス以外になら表示できますか?
EditBoxになら、表示できます。
>任意の文字(例えばABC)をリストボックスに表示することは出来ますか?
できません。
LB_ADDSTRINGやLB_INSERTSTRINGをSendMessageしてリストに追加します。
http://wisdom.sakura.ne.jp/system/winapi/win32/win68.html
ありがとうごさいます。サイトを参考にしてみます。
szBuff ←取得している文字列とします
lpszComp = strtok(szBuff, );
lstrcpy(szComp, lpszComp);
SetDlgItemText(hWndmain,IDC_COMP,szComp);
として、ダイアログボックスのEditBoxに表示することができているのですが、この
EditBoxからListBoxに列挙したいのですが、どうしてもわかりません。
参考サイトをみても、よく理解できないです。よろしくお願いします。
GetDlgItemでリストボックスのウィンドウハンドルを取得して、
> LB_ADDSTRINGやLB_INSERTSTRINGをSendMessageしてリストに追加します。
http://www.kumei.ne.jp/c_lang/sdk/sdk_20.htm
ここでわからなければ、もう一度Windowsプログラムの基礎から勉強しなおしてくださ
い。
(きちんと文章を読めば、詳しい説明がかいてあります。)
参照先サイトより。
> SendMessage(list , LB_ADDSTRING , 0 , (LPARAM)strText[i]);
# 更新したら Blue さんのレスがすでについてた…orz
リストボックスには、文字を入れることができました。どうもありがとうございまし
た。しかし、今度は、その読み込んだ文字列を変換することができません。どうしたら
いいでしょうか?
ソースは、
リストボックスに入っている文字列の取得
↓
nSelected = (LONG)SendMessage(hList1, LB_GETCURSEL, 0, 0);
if(nSelected == LB_ERR)
{ return FALSE;
}
nLength = (LONG)SendMessage(hList1, LB_GETTEXTLEN, (WPARAM)nSelected, 0);
if((nLength <= 0) || (nLength > 256))
{ return FALSE;
}
nResult2 = (LONG)SendMessage(hList1, LB_GETTEXT,(WPARAM)nSelected, (LPARAM)sz);
if(nResult2 == LB_ERR)
{return FALSE;
}
lpszComp = strtok(sz, );
lstrcpy((LPSTR)szComp, lpszComp);
szServer = szComp; ←ここでエラー・・・
やりたいことは取得した文字列を他の文字列に変換したい
エラー内容は、
error C2440: '=' : 'char [20][256]' から 'char [1024]' に変換できません。
です。 よろしくお願いします
そのエラーの意味のまんまなんですが。
多分、szCompはchar szComp[20][256];と宣言していて
szServer は、char szServer[1024];と宣言しているのではないですか?
一次元の配列と二次元の配列は別物ですから、szServer = szComp;見たいな事は出来ません。
ちなみにリストボックスに複数の文字列を一度で入れる事は出来ません。
文字列は一つ一つ追加していきます。
この辺はちゃんと関数の機能を理解して使わないとこの先も同じようにハマリますよ。
言われた通りにやったらできたでは駄目です。
MSDNやHELPをきちんと読みましょう。
基、
この場合は、LB_ADDSTRINGの使い方ですね。
無事、解決しました。
どうもありがとうございました。
実際、SendMessage(…,LB_ADDSTRING,…)で入りました。