• ベストアンサー

MessageBoxがあるかないかで結果が違うんですが。

800文字超えて質問できないので、ソースはURIで載せさせてもらいました。 //testing.c http://www.ipc-tokai.or.jp/~hitonaga/ToSugaiSama/testing.c //FulfillListBoxFromFile.c http://www.ipc-tokai.or.jp/~hitonaga/ToSugaiSama/FulfillListBoxFromFile.c FulfillListBoxFromFile.cの //MessageBox(NULL, "FulfillListboxFromFile is doing", NULL, MB_OK); これを有効にすると正常に動作するのですが、これがないとなぜかいろいろ思うように動いてくれません。 なぜなんでしょう。

質問者が選んだベストアンサー

  • ベストアンサー
  • hope10
  • ベストアンサー率48% (17/35)
回答No.2

良く判りませんが、有効にすると正常に動作するのなら、まぐれで正常に見えるだけだと考えるのが妥当ではないでしょうか? 初めから難しいタイミングで処理せずに、メニューコマンド等でやりたい処理が完全かどうか十分に確かめた上で、つまずいた点を考えれば解決に繋がると思います。

ggaogg
質問者

お礼

なるほど。 ところで、メニューコマンドとはなんのことですか?

すると、全ての回答が全文表示されます。

その他の回答 (3)

  • Rulururu
  • ベストアンサー率18% (6/33)
回答No.4

 strtok()の返すポインタは、  1つだけのポインタなので、  何回も使用する場合、 ポインタをそのまま使わず、  文字列をコピーして  使用しなくては、いけませんでしたね。    それが、エラーの原因でしたか。    >まあこれも涙のデバッグの証です。  うーん、がんばってください。

ggaogg
質問者

お礼

んーーー、そ、そうなんですか? なんでコピーしなければいけないのかイマイチわからなかったんですけど・・、いろいろ試行錯誤したらうまくいったので結果オーライなわけです。 strtokは標準ライブラリでANSIで統一されてるはずだから、VC++でも同じエラーがでるはずなのに、出ないとなると、今の自分が理解できる境地ではないと思いました。。 親身に考えて下さって、ありがとうございました。

すると、全ての回答が全文表示されます。
  • Rulururu
  • ベストアンサー率18% (6/33)
回答No.3

自分のところ(VC++.NET, XP)でコンパイル して見ましたが、MessageBoxの有り無しの 違いがわかりませんでした。 MessageBoxが無いと、どんな現象に なるんでしょうか? いちお、テキストもリストに表示 されていたましたし。 (プログラムは、 ReadFileの引数の所で、コンパイルエラーが あったので、キャストした以外は 変更も加えてません。)

ggaogg
質問者

お礼

試してくださったのはうれしいです。 結論から言いますと、多分解決しました。 これからどんなバグがでてくるかはわかりませんが・・ 一応応急で、 //宣言//char copyedStr[1000]; tokenStr = strtok(insStr, "\n"); strcpy(copyedStr, tokenStr); としたらうまくいきました。 http://www.ipc-tokai.or.jp/~hitonaga/ToSugaiSama/worksFulfillListBoxFromFile.c お騒がせしました。 しかし、#1#2さんのお返事がなければ、まだMessageBoxのせいにしていたと思います。 >#3 自分が使っているのは[microsoft Visual C++ Toolkit 2003]と[Microsoft SDK]のライブラリで、総合開発環境ではないですが、Toolkit使ってるので文法的に違いはないとは思うのですが・・。 MessageBoxがないと、例えば、文章が 「X ̄」とか「@%」とか、なんでそうなるのって文字になったり、メモリ参照のエラーがでたりしました。 正常に表示されることもあれば、異常な表示をすることもあって。 tokenStr[strlen(tokenStr)-1] = '\0'; というのは本当は必要なかったですね。 まあこれも涙のデバッグの証です。

すると、全ての回答が全文表示されます。
  • VT250F
  • ベストアンサー率30% (26/84)
回答No.1

メッセージボックスを出す出さないで結果が違うことは 多々あります。 特に、複数画面の上下関係(どちらが上になるか)とか センドキーズの発行とか、 フォーカスの当り具合とか、数々の異なる点が出ます。 これを回避する為にタイマーで数秒待ったり、 appActivate で画面の前後関係を変えたり、 DoEvents 命令を入れたり、いろいろ工夫が必要です。

すると、全ての回答が全文表示されます。

関連するQ&A