「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も関係?)を教えて頂きたく、質問いたしました。
宜しくお願いいたします。
No.1ベストアンサー
- 回答日時:
どこを無効化したのかの違いにより質問の現象が起きているのでしょう
Formクラスのメソッドの中で オブジェクトの指定無しにInvalidateを呼んだ場合 FormクラスのInavalidateが実行されます
このときフォームに貼り付けたコントロール(子)まで無効にしてくれるかどうかをMSDNなどで調べてみましょう
Form1_Paintで描画した際にはMouse_Downの中のInvalidateと整合性が取れているので描画します
panel4_Paintで描画させようとする場合Mouse_Downで単にInvalidate()としただけでは panel4を無効化しないのかも知れません
Mouse_Downの中で panel4->Invalidate() などとしてみましょう
panel4->Invalidate() としたら無事に動作しました。
「クラス」や「メソッド」の意味を理解せずに作っているから悩むのですね!!
どうも有り難うございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# Windows Formアプリからコンソールを呼び出して文字を出力させたい 8 2023/05/09 10:53
- C言語・C++・C# C# DatagridviewにExcelシートを反映するとエラーが出る 2 2023/05/06 17:12
- 英語 『G19 Gen5 MOS - Modular Optic System for Gen5』 の 『 1 2023/03/05 13:37
- マウス・キーボード マウスのないパソコン 9 2022/03/30 10:53
- 英語 Modular Optic System (MOS)とは、一体どの様な物の事なのかを教えてください。 1 2023/03/03 09:52
- 英語 下記の英文の日本語訳をお願いします。 1 2023/03/02 10:01
- 英語 下記の英文を日本語に訳して、その意味を教えてください。 1 2023/03/09 14:13
- デスクトップパソコン パソコンの画面が固まった感じになり マウスの矢印を持って行って左クリックしても固まりに変化が起きない 2 2022/07/20 19:46
- C言語・C++・C# C#テキストボックスの文字を配列にいれてその後表示する 4 2022/07/17 04:47
- Windows 10 (緊急)windowsのタスクバーやアプリ?が反応しない 3 2023/03/28 05:03
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C# リストビューの特定のセルの...
-
JAVAでの背景画像表示
-
このプログラミングをどう組み...
-
Canvas等の図形を移動する時,直...
-
Labelコントロールの背景をグラ...
-
重なった要素上でのイベントで...
-
Java 15パズルを作ったのですが...
-
Androidで画像の中で指定した範...
-
VB.NET フォーム上に描いたグ...
-
エクセルVBAで、条件に一致する...
-
変数名の付け方
-
パワーポイントのVBAでテキスト...
-
「天声人語」をインターネット...
-
Java初級 引数に適用できません
-
ワイルドカード<?>と型パラメー...
-
複数の変数を宣言する時、同時...
-
インスタンス参照でアクセスで...
-
「タイプ初期化子が例外をスロ...
-
Vba ListViewの行挿入に関して...
-
EXCEL VBAにて動的にCheckBOXを...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VB.NET フォーム上に描いたグ...
-
C# DataGridView のCellPaintin...
-
VB.NETのSendMessageを教えてく...
-
canvasで表示されてる画像を1...
-
Exception occurred during eve...
-
requestanimationframeを一斉に...
-
Labelコントロールの背景をグラ...
-
SwingとEDT(イベントディスパッ...
-
C# リストビューの特定のセルの...
-
MFCでMSペイントみたいなツー...
-
画面のちらつきの原因が知りた...
-
JAVAでの背景画像表示
-
Androidで画像の中で指定した範...
-
このプログラミングをどう組み...
-
描画してもウィンドウをリサイ...
-
JavaScriptで直線を描画したい
-
SwingのpaintComponent(...
-
BMP画像を画像処理して連続に表...
-
Java 15パズルを作ったのですが...
-
<JFreeChart> 縦軸の値の間隔を...
おすすめ情報