リストボックスの初期化について

[戻る]
Super 初心者 2002/09/18(水) 15:44:41
リストボックスについてなのですが、リストが存在していない状態で、
リストボックス内を選択(クリック)すると、
”フフフフフフフフフフフ”と文字が表示されてしまいます。
原因がわからないので、どなたか教えていただけますか?
状態は、オーナードローを使用していてResetContent();
も使用しています。
できれば早めに解決したいのですが。

Super 初心者 2002/09/18(水) 15:47:51
開発環境は、
VC++ver6.0 windows2000 です。

sugar 2002/09/18(水) 17:03:14
表示される文字列は、どうやって取得していますか?
リストが存在していない状態でデータ取得系の処理を行うと、
LB_ERRを返して失敗しませんか?

Super 初心者 2002/09/18(水) 17:19:21
説明不足ですいません。
ResetContent();
の初期化処理後、リストには何も手を加えていません。
リストの項目には何も表示されていない状態で、
画面上のリストボックスでクリックすると、
先ほどのような状態が起きてしまうのですが。
すみませんが、よろしくお願いいたします。
ためしに
GetCount()で戻り値をみましたが初期化後は0でした。

YuO [E-Mail] 2002/09/18(水) 17:53:50
> ”フフフフフフフフフフフ”と文字が表示されてしまいます。

どこに表示されたのでしょう。
リストボックス上だったら……大問題な気がしますけど……。

Super 初心者 2002/09/18(水) 18:19:16
あの、リストボックス上です・・・。
大問題なんですか?
解決方法とかはありますか?

sugar 2002/09/18(水) 18:33:42
ResetContent()で項目を0件にしたんですよね?
GetCount()で0が返ってくるということで、ここまでは問題ないです。
で、リストボックス上に”フフフフフフフフフフフ”が出ると言うのは、どういうことですか?
リストボックスの項目として、これが表示されてるとも解釈できますが、
そうだとするなら、状況の説明に矛盾がありますよね?

「リストボックス上」とは、どういうことですか?

Super 初心者 2002/09/18(水) 19:52:33
なにも表示されていないし、GetCount()で0が返ってきている状態なのに、
クリックすると”フフフ・・・”が項目の最上段に表示されてしまうのです。

オーナードローのリストボックスなので、クリックイベントか何かを
自分で処理しなければならないのでしょうか?

? 2002/09/18(水) 20:09:04
リストボックスって確かアイテムがなくても
フォーカスが当たると1行目に点線の矩形を描きません?
つまりアイテムがなくてもオーナードローが呼ばれるので
オーナードローの中でアイテムの有無を確認せず
文字列を取得し(エラーチェックもしないで)表示している
それがたまたま”フフフフフフフフフフフ” なのでわ?

Super 初心者 2002/09/19(木) 12:13:36
解決方法はないのでしょうか??

tetsu 2002/09/19(木) 13:24:29
TETSUです。

たとえば、下記のように

 char test[256];

  AddString(test);

とすると、リストボックスには”フフフフフフフフ”と表示されます。
# testの初期値は何もしていないと0xccccccccなので

どこかで同じようなことがおきていませんか?

# すべてのAddStringにブレークをあてて、確かめてみては?

はずしていたらごめんなさい。

tetsu 2002/09/19(木) 13:30:38
tetsuです。

ごめんなさい。オーナードローなら

>AddString(test);

TextOutかな。

? 2002/09/19(木) 16:17:33
>解決方法はないのでしょうか??
だから、sugarさんの 2002/09/18(水) 17:03:14 の質問
「表示される文字列は、どうやって取得していますか?」
オーナードローの引数に文字列はないんだから
中でご自分で取得されてますよね?
その時エラーがでてませんか?
文字列取得前にアイテムの有無は調べてないのですか?

この質問に答えてもらわないと・・・・

? 2002/09/19(木) 16:22:10
追伸
>つまりアイテムがなくてもオーナードローが呼ばれるので
呼ばれてますよね?
ブレークポイントで止めてみてください。

Super 初心者 2002/09/19(木) 18:28:56
[[解決]]
解決しました。
DrawItem内部のDrawTextで取得していました。
その時の文字列の初期化を忘れていました。
皆さんありがとうございました。

古いスレッドには追加発言できません。