リストボックスについてなのですが、リストが存在していない状態で、
リストボックス内を選択(クリック)すると、
”フフフフフフフフフフフ”と文字が表示されてしまいます。
原因がわからないので、どなたか教えていただけますか?
状態は、オーナードローを使用していてResetContent();
も使用しています。
できれば早めに解決したいのですが。
開発環境は、
VC++ver6.0 windows2000 です。
表示される文字列は、どうやって取得していますか?
リストが存在していない状態でデータ取得系の処理を行うと、
LB_ERRを返して失敗しませんか?
説明不足ですいません。
ResetContent();
の初期化処理後、リストには何も手を加えていません。
リストの項目には何も表示されていない状態で、
画面上のリストボックスでクリックすると、
先ほどのような状態が起きてしまうのですが。
すみませんが、よろしくお願いいたします。
ためしに
GetCount()で戻り値をみましたが初期化後は0でした。
> ”フフフフフフフフフフフ”と文字が表示されてしまいます。
どこに表示されたのでしょう。
リストボックス上だったら……大問題な気がしますけど……。
あの、リストボックス上です・・・。
大問題なんですか?
解決方法とかはありますか?
ResetContent()で項目を0件にしたんですよね?
GetCount()で0が返ってくるということで、ここまでは問題ないです。
で、リストボックス上に”フフフフフフフフフフフ”が出ると言うのは、どういうことですか?
リストボックスの項目として、これが表示されてるとも解釈できますが、
そうだとするなら、状況の説明に矛盾がありますよね?
「リストボックス上」とは、どういうことですか?
なにも表示されていないし、GetCount()で0が返ってきている状態なのに、
クリックすると”フフフ・・・”が項目の最上段に表示されてしまうのです。
オーナードローのリストボックスなので、クリックイベントか何かを
自分で処理しなければならないのでしょうか?
リストボックスって確かアイテムがなくても
フォーカスが当たると1行目に点線の矩形を描きません?
つまりアイテムがなくてもオーナードローが呼ばれるので
オーナードローの中でアイテムの有無を確認せず
文字列を取得し(エラーチェックもしないで)表示している
それがたまたま”フフフフフフフフフフフ” なのでわ?
解決方法はないのでしょうか??
TETSUです。
たとえば、下記のように
char test[256];
AddString(test);
とすると、リストボックスには”フフフフフフフフ”と表示されます。
# testの初期値は何もしていないと0xccccccccなので
どこかで同じようなことがおきていませんか?
# すべてのAddStringにブレークをあてて、確かめてみては?
はずしていたらごめんなさい。
tetsuです。
ごめんなさい。オーナードローなら
>AddString(test);
TextOutかな。
>解決方法はないのでしょうか??
だから、sugarさんの 2002/09/18(水) 17:03:14 の質問
「表示される文字列は、どうやって取得していますか?」
オーナードローの引数に文字列はないんだから
中でご自分で取得されてますよね?
その時エラーがでてませんか?
文字列取得前にアイテムの有無は調べてないのですか?
この質問に答えてもらわないと・・・・
追伸
>つまりアイテムがなくてもオーナードローが呼ばれるので
呼ばれてますよね?
ブレークポイントで止めてみてください。
解決しました。
DrawItem内部のDrawTextで取得していました。
その時の文字列の初期化を忘れていました。
皆さんありがとうございました。