こんにちは Puppyです。
OnPaintの中に記述しているプログラムをステップ実行しながら
うまく描画できているか、ひとつづつ確認したいのですが
画面を最大化していると、描画の様子が確認できません。
VCのデバッグの画面とプログラムの描画の画面を小さくして
2つとも表示させると、ステップ実行しながら描画の様子が
確認できるのですが、ちいさくてよく見えないんですぅ。(T-T;
皆さんはどんなふうにデバッグされていますか。
教えて下さい。m(..)mぺこり
>うまく描画できているか、ひとつづつ確認したいのですが
ひとつづつ描画するようにすれば良いのでは・・
確認したい以外の描画をコメントアウトしておけば一つづつ確認できそうですが・・
そういう事ではない?
不良PGさん こんにちは Puppyです。
昨日はありがとうございました。
>そういう事ではない?
えと、たとえば
for () {
dc.MoveTo(変数1, 変数2); // dcはデバイスコンテキスト
dc.LintTo();
}
みたいなループがあって、ステップ実行し
変数の内容を確認しながら、1本1本線がひかれていく様子を画面で
確認したいのです。
このときにデバッグ画面(VC)と開発ソフトの画面が
両方みえていないと、再描画の関係?でうまくいきません。
再描画がくりかえされるからかな?画面が見えなくなる。
(重ならないようにすると、うまくいくけど画面がちっちゃくなる)
説明がヘタですみません。m(..)mぺこり
デバッグはちっちゃい画面でするしかないのでしょうか。(T-T;
皆様はどのように確認していますか?
> 変数の内容を確認しながら、1本1本線がひかれていく様子を画面で
> 確認したいのです。
ウィンドウを「常に手前に表示」状態にすれば可能です。
常に手前に表示するには、該当するCWndに対して
以下の呼び出しを行います。
(ダイアログならば、OnInitDialog()の中など)
SetWindowPos(&wndTopMost,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE);
>1本1本線がひかれていく様子を画面で確認したいのです。
描画ループにスリープを入れて、
>変数の内容を確認しながら、
確認したい変数の内容を開発ソフトの画面に表示させればよいのでは?
>for () {
> dc.MoveTo(変数1, 変数2); // dcはデバイスコンテキスト
> dc.LintTo();
#if _DEBUG
dc.TextOut(... 変数1 変数2);
Sleep( 1000 ); //例えば1秒待ち
#endif //_DEBUG
>}
Puppyです。
dairygoodsさん お返事ありがとうございます。
教わった方法でやってみたのですが、手前に表示されませんでした。
サブクラス化したコントロールだからでしょうか?
不良PGさん お返事ありがとうございます。
途中でとめづらいですが、Sleepでなんとかなりそうです。
ありがとうございました。(*^_^*)
他にも良い方法があれば、ぜひ教えて下さい。
既に解決しているようですが、こんなデバッグの仕方はいかがでしょうか?
アウトプットウィンドウに座標をTRACEマクロを使って出力しながらデバッグしています。座標
のデバッグの時は、アウトプット以外は全て非表示にして、VCの画面をなるべく小さくします。
後はファンクションキーでステップ実行などをしていきます。(ツールバーも邪魔ですから非表
示にします。)
こうすると、デバッグ実行終了後にも座標の数値を確認できるので非常に便利です。
(例)プリプロセッサの定義に DEBUG_DRAWを追加します
for (i=0; i<100; i++) {
#ifdef DEBUG_DRAW
TRACE3(i=%d: 変数1=%d, 変数2=%d\n, i, var1, var2 );
#endif
dc.MoveTo(var1, var2); // dcはデバイスコンテキスト
dc.LintTo();
// 何らかの処理
}
この部分のデバッグの必要なくなって邪魔になったら、プリプロセッサの定義から DEBUG_DRAW
を外します。
> 教わった方法でやってみたのですが、手前に表示されませんでした。
> サブクラス化したコントロールだからでしょうか?
コントロールだけが手前に表示されるわけではありません。
ダイアログウィンドウ自体を手前に表示するようにします。
リモートデバッグ、これ最強。
私はダブルディスプレイでやってます。(だめ?)
あと、dbmon.exeってのもあります。
さらに昔はBEEPで変数内容を表現するプログラムを
組んでいました。(泣)
MSXの旧き良き時代の話ですが。
ここでは初めまして。com-aと申します。
> 私はダブルディスプレイでやってます。(だめ?)
> あと、dbmon.exeってのもあります。
こういうパターンで良いなら、仮想デスクトップでもOKかも。
> さらに昔はBEEPで変数内容を表現するプログラムを
> 組んでいました。(泣)
> MSXの旧き良き時代の話ですが。
仲間ですね。(^ ^;)
場合によっては、PLAYやSOUNDやCOLORも使ってました。(笑)
Puppyです。
いつのまにか、たくさんお返事が・・・
皆様、たくさんのお返事ありがとうございます。
いろいろ試してみたいと思います。
>私はダブルディスプレイでやってます。(だめ?)
うらやましいですぅ。(T-T;
昨日やっと先輩から、パソコンを一人で使わせてもらえるように
なったばっかりなんですぅ。もちろん中古品でーす。(T-T;
ダブルディスプレイになるまでは10年くらいかかりそうでーす。(笑)
(多分、先輩に10年はやいってゆわれますから。)
皆様、ありがとうございました。m(..)mぺこり