他の関数からOnDraw関数を呼ぶ方法と変数宣言 – プログラミング – Home

他の関数からOnDraw関数を呼ぶ方法...
 
通知
すべてクリア

他の関数からOnDraw関数を呼ぶ方法と変数宣言


コウ
 コウ
(@コウ)
ゲスト
結合: 23年前
投稿: 79
Topic starter  

またまた初歩的なとこで躓いてます。どうか教えてください。今、Enterキーを押されたらOnDrawで新たな
画面を表示させたいのですが、OnKeyDown関数を作ってそこからのOnDraw関数を呼ぶ方法がわかりません。
ただ画面を白紙にすればOnDrawが動くのでしょうか?それと、そこでflagを立てて行こうと考えたのですが、CSemi0831View::CSemi0831View()の下にint flag;と書いたのですが定義されていませんとエラーが出ます。
どうしてでしょう?前にはここに書いて動いたと思ったのですが…ちなみにプロジェクト名がSemiです。
また自分で色々調べてから聞きなさいとか言われてしまいそうですが、いちおう調べてわらかなかったので
どうか教えてください


引用解決済
トピックタグ
Bun
 Bun
(@Bun)
ゲスト
結合: 24年前
投稿: 761
 

OnPaint()や、OnDraw()は呼んではいけません。

呼ぶ代わりに
CWnd::Invalidate()を使いましょう。


返信引用
コウ
 コウ
(@コウ)
ゲスト
結合: 23年前
投稿: 79
Topic starter  

呼んではだめなんですか?!プログラムを書くところにも書いてあったのですがその理由がわからないので
たぶん大丈夫だと思ってたのですが…CWnd::Invalidate()を書くとどのような作用があるんですか?
あと()の中にtrueやnullなどが本に書いてあったりしたんですが、これもいまいち意味がわかりません。


返信引用
Bun
 Bun
(@Bun)
ゲスト
結合: 24年前
投稿: 761
 

>呼んではだめなんですか?!
>その理由がわからないので

システム(OS)は描画が必要になった時にOnPaint()を呼んでくれるので
アプリケーションが呼ぶ必要はないのです。

また、Invalidate()は「描画が必要ですよ」というお知らせになるので
結果、間接的にOnPaint()を呼ぶことになります。

TRUEを指定すると背景も一度消去します。

#私もあまり詳しくないので、参考書を購入されて、Windowsのしくみ
#について学ばれてはいかがでしょうか?


返信引用
Hal
 Hal
(@Hal)
ゲスト
結合: 24年前
投稿: 67
 

Halです。
OnDraw()が、呼び出されるのはウィンドウの再描画が行われる時です。
Invalidate()関数は、端的に言うとウィンドウの再描画を行わせる
時に使用する関数(詳細はヘルプを参照ください)ですので、
自動的にOnDraw()が呼び出されるのです。
このことは、全てヘルプに記載されていることなのでヘルプをじっくり
読んでください。
それでは。


返信引用
コウ
 コウ
(@コウ)
ゲスト
結合: 23年前
投稿: 79
Topic starter  

Bunさん細かくありがとうございました。halさんすいませんでした。もっとじっくり見てみます。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました