またまた初歩的なとこで躓いてます。どうか教えてください。今、Enterキーを押されたらOnDrawで新たな
画面を表示させたいのですが、OnKeyDown関数を作ってそこからのOnDraw関数を呼ぶ方法がわかりません。
ただ画面を白紙にすればOnDrawが動くのでしょうか?それと、そこでflagを立てて行こうと考えたのですが、CSemi0831View::CSemi0831View()の下にint flag;と書いたのですが定義されていませんとエラーが出ます。
どうしてでしょう?前にはここに書いて動いたと思ったのですが…ちなみにプロジェクト名がSemiです。
また自分で色々調べてから聞きなさいとか言われてしまいそうですが、いちおう調べてわらかなかったので
どうか教えてください
OnPaint()や、OnDraw()は呼んではいけません。
呼ぶ代わりに
CWnd::Invalidate()を使いましょう。
呼んではだめなんですか?!プログラムを書くところにも書いてあったのですがその理由がわからないので
たぶん大丈夫だと思ってたのですが…CWnd::Invalidate()を書くとどのような作用があるんですか?
あと()の中にtrueやnullなどが本に書いてあったりしたんですが、これもいまいち意味がわかりません。
>呼んではだめなんですか?!
>その理由がわからないので
システム(OS)は描画が必要になった時にOnPaint()を呼んでくれるので
アプリケーションが呼ぶ必要はないのです。
また、Invalidate()は「描画が必要ですよ」というお知らせになるので
結果、間接的にOnPaint()を呼ぶことになります。
TRUEを指定すると背景も一度消去します。
#私もあまり詳しくないので、参考書を購入されて、Windowsのしくみ
#について学ばれてはいかがでしょうか?
Halです。
OnDraw()が、呼び出されるのはウィンドウの再描画が行われる時です。
Invalidate()関数は、端的に言うとウィンドウの再描画を行わせる
時に使用する関数(詳細はヘルプを参照ください)ですので、
自動的にOnDraw()が呼び出されるのです。
このことは、全てヘルプに記載されていることなのでヘルプをじっくり
読んでください。
それでは。
Bunさん細かくありがとうございました。halさんすいませんでした。もっとじっくり見てみます。