「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も関係?)を教えて頂きたく、質問いたしました。
宜しくお願いいたします。
お礼
回答頂きありがとうございました。私がかなりてんぱってまして、 this->radioButtonKisu->Enable = playing; と書いてました。m(_ _)m