プログラミング初心者です。
Visual C++6.0で、ダイアログベースで、アプリケーションを作成しております。
ダイアログに画像を表示するために、OnPaint関数にコードを書こうと思ったのですが、
void C***Dlg::OnPaint()
{
if (IsIconic())
{
*1
}
else
{
*2
}
}
このようになっていて、*2の所へコードを書くように、本には書いてあるのですが、*1は、何をする時に書き込むのでしょうか?
いろいろな本や、サイトで調べましたが、「ここは別に何もしなくていい」というようなことしか書いてなかったので、よくわかりませんでした。
IsIconic()
がどういう関数か調べればわかりそうなもんですが…
IsIconic()が、「ウインドウがアイコン化されているか判別する」っていうことは、わかっているのですが、最小化などされている時に、ダイアログに描画しても意味がないと思うので、「最小化から戻る時に*1のコードが実行される」(これは、自分のカンです。)とかの、コードが実行されるタイミングや、どういう時に使うのかを教えてもらいたいのです。
編集 削除これもカンですがこういうことは実際にやってみるのが一番速いと思われます(^^)b
というわけでウィザードにてダイアログ型テストアプリを作成し、以下の3個所にブレークを設定してみました。なお環境は、VC++6.0SP5(Windows2000)です。
1.メインダイアログ(最初にウィザードで作成されたもの)のOnPaintにおいてIsIconic()が真になったときのパス(つまり*1ですね)
2.モーダルな子ダイアログのOnPaintにおける*1
3.モードレスな子ダイアログのOnPaintにおける*1
なおそれぞれのダイアログにはリソースエディタにて「最小化ボタン」を付加しています。
結果はといいますと…1.ではなにをやってもブレークせず、2.および3.では最小化した瞬間にブレークしました。
ググさんが予想された「最小化から戻る時」にはブレークしませんでした。
と、この程度でよければ数分でテストアプリを作成して試せるのが、ウィザード + MFC のありがたいところだと思っています。
ヘンゼルの記憶さん、返信ありがとうございます。
僕も同じ実験をさせていただいたところ、1.の場合も最小化(アイコン化)した時にブレークしました。2.、3.は同じ結果が出ました。
とても勉強になりました。ありがとうございました。