※ ChatGPTを利用し、要約された質問です(原文:「VC++2008」の「Invalidate」について)
「Invalidate」の使い方と問題の対処方法(VC++2008)
このQ&Aのポイント
VC++2008 Express Editionの入門者です。「Invalidate」の動作で悩んでいます。マウスを左クリックしても赤印が書かれない問題が発生しています。Invalidateの使い方やupdateの関係について教えてください。
VC++2008 Express Editionの入門者です。「Invalidate」の使い方について質問です。マウスを左クリックしても赤印が書かれない問題が発生しています。Invalidateとupdateの関係が影響しているのでしょうか?お知恵をお借りしたいです。
VC++2008 Express Editionの初心者です。「Invalidate」の使い方について質問があります。マウスを左クリックしても赤印が書かれない問題が発生しています。Invalidateが機能していない可能性があります。解決策を教えてください。
「VC++2008」の「Invalidate」について
「VC++2008 Express Edition」の入門者です。「Invalidate」の動作で悩んでいます。
動作は、「マウスを左クリックしたところに赤印を付ける」と言う物です。
最初、以下の様に「Form1」での時には問題なく動いていました。
--------------------------------------------------------------------------------
//マウスクリック
private: System::Void Form1_MouseDown(System::Object^ sender, System::Windows::Forms::MouseEventArgs^ e) {
//~~~~~~~~~~~~~~
// マウス処理
//~~~~~~~~~~~~~~
Invalidate();
}
//画面描画
private: System::Void Form1_Paint(System::Object^ sender, System::Windows::Forms::PaintEventArgs^ e) {
//~~~~~~~~~~~~~~
// 赤印を付ける
//~~~~~~~~~~~~~~
}
--------------------------------------------------------------------------------
上記では、マウスを左クリックすると赤印がすぐに付き、問題はありませんでした。
上記を「Form1」から「panel4」上に書き換えたのが下記です。
--------------------------------------------------------------------------------
//マウスクリック
private: System::Void panel4_MouseDown(System::Object^ sender, System::Windows::Forms::MouseEventArgs^ e) {
//~~~~~~~~~~~~~~
// マウス処理
//~~~~~~~~~~~~~~
Invalidate();
}
//画面描画
private: System::Void panel4_Paint(System::Object^ sender, System::Windows::Forms::PaintEventArgs^ e) {
//~~~~~~~~~~~~~~
// 赤印を付ける
//~~~~~~~~~~~~~~
}
--------------------------------------------------------------------------------
上記では、マウスを左クリックしても赤印が書かれません。
一度別のプログラムなどに行って、赤印の場所が隠れて、またはこのプログラムWindowsを移動して、
赤印の場所を画面外に出して見えなくしてから戻った瞬間に赤印が書かれます。
上記の動作をInvalidateがしてるとは思うのですが・・・
Invalidateの使い方(updateも関係?)を教えて頂きたく、質問いたしました。
宜しくお願いいたします。
お礼
panel4->Invalidate() としたら無事に動作しました。 「クラス」や「メソッド」の意味を理解せずに作っているから悩むのですね!! どうも有り難うございました。