プログラム初心者です。よろしくお願いします。
フォームアプリケーションで入門としてクリックやウィンドウの検知を行うプログラムを書いてみたのですが、右上の閉じるボタン[×]を押すとウィンドウは閉じますが、デバックは終了しません。
プロセスを見てもプロジェクト名のプロセスは残ったままで、デバッグを手動で停止させると消えます。
これはこういうものなのでしょうか?
初めて書いたプログラムなので比較対象が無くて分かりません。
以下プログラムコード
project1
------------------------------------------
(略)
protected: virtual void WndProc(System::Windows::Forms::Message% m) override
{
switch(m.Msg)
{
case WM_TIMER:
if(m.WParam.ToInt32()==1)
{
POINT point;
GetCursorPos(&point);
Form1::label2->Text="X:"+point.x;
Form1::label3->Text="Y:"+point.y;
setlocale( LC_ALL, "Japanese" );
TCHAR buff[260];
HWND hWnd;
hWnd=WindowFromPoint(point);
GetWindowText(hWnd, buff, sizeof(buff));
Form1::label1->Text=gcnew String(buff);
}break;
case WM_MOVE:
Form1::label4->Text="移動しました。";break;
case WM_LBUTTONDOWN:
Form1::label4->Text="左クリック";break;
case WM_RBUTTONDOWN:
Form1::label4->Text="右クリック";break;
/*default:
Form1::label4->Text=m.Msg.ToString();break;*/
}
Form::WndProc(m);
}
private: System::Void Form1_Load(System::Object^ sender, System::EventArgs^ e)
{
HWND hmyWnd = static_cast<HWND>(this->Handle.ToPointer());
SetTimer(hmyWnd,1,100,NULL);
}
};
-------------------------------------------------------------
また、case WM_RBUTTONDOWN:の内部にClose();を書き足して実行すると
「'System.ObjectDisposedException' のハンドルされていない例外が System.Windows.Forms.dll で発生しました。」
と出ます。
何かおかしいところはありますでしょうか?
それとも仕様でしょうか?
お教えくださいm(_ _)m
No.3ベストアンサー
- 回答日時:
以下のようにイベントハンドラが記述されるので・・・ってWM_MOVEでしたね・・・。
上記コードに、WM_MOUSEMOVE通知時のコードがあったとしたらそれをイベント
ハンドラに記述します。
という感じで、夫々の処理をイベントハンドラに書いても起きますか?
回答ありがとうございます。
画像付の説明恐れ入ります。イベントハイドラについてはそういうのがあるということは知っていましたが作ったことは無かったので参考になりました。
早速実装してみたところ、正常にデバッグが終了いたしました。
ウィンドウプロシージャがいけないようですね。
ですが私が今後実装したいと考えているプログラムは、グローバルフックを使い他のプログラム(FireFoxなど)のWM_MOVEを取得したいと考えています。
そのため今回はメッセージの扱いを学ぶためにウィンドウプロシージャを使用しました。
今後もこの分野で何度か質問をさせていただく事があると思います。その時はまたぜひ助けていただければ幸いです。
今回は本当にありがとうございます。
No.1
- 回答日時:
コード見ただけでは、正しい様な気がしますね。
ただ、なぜ、WndProcをオーバーライドするという方法を選んだんですか?
上記の事をやりたいだけならイベントハンドラを書いたらいいだけなんではないでしょうか?
一応、ご存知かもしれませんが、イベントハンドラの追加の仕方を紹介しておきます。
まず、下記画像にある様にメニューからプロパティウィンドウを表示させてください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
10代と話して驚いたこと
先日10代の知り合いと話した際、フロッピーディスクの実物を見たことがない、と言われて驚きました。今後もこういうことが増えてくるのかと思うと不思議な気持ちです。
-
人生最悪の忘れ物
今までの人生での「最悪の忘れ物」を教えてください。 私の「最悪の忘れ物」は「財布」です。
-
【大喜利】看板の文字を埋めてください
旅行先でほぼ消えかけている看板に出会いました。 何を気を付ければいいのか穴埋めをして教えてください。
-
自分の通っていた小学校のあるある
進学したり大人になってから、「あれって自分の小学校だけだったのかな」と思うことありますよね。 逆に「他の小学校ってそんなことするの!?」と思ったり。 そんな「自分の通っていた小学校」のあるあるを教えてください!
-
【選手権お題その2】この漫画の2コマ目を考えてください
サッカーのワンシーンを切り取った1コマ目。果たして2コマ目にはどんな展開になるのか教えてください。
-
C# フォームを閉じてもプログラムが終了しない
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・「みんな教えて! 選手権!!」開催のお知らせ
- ・漫画をレンタルでお得に読める!
- ・【選手権お題その2】この漫画の2コマ目を考えてください
- ・2024年に成し遂げたこと
- ・3分あったら何をしますか?
- ・何歳が一番楽しかった?
- ・治せない「クセ」を教えてください
- ・【大喜利】看板の文字を埋めてください
- ・【大喜利】【投稿~12/17】 ありそうだけど絶対に無いことわざ
- ・【選手権お題その1】これってもしかして自分だけかもしれないな…と思うあるあるを教えてください
- ・【穴埋めお題】恐竜の新説
- ・我がまちの「給食」自慢を聞かせてっ!
- ・冬の健康法を教えて!
- ・一番好きな「クリスマスソング」は?
- ・集合写真、どこに映る?
- ・自分の通っていた小学校のあるある
- ・フォントについて教えてください!
- ・これが怖いの自分だけ?というものありますか?
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・10代と話して驚いたこと
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
あるプログラムのコマンドライ...
-
Excelで4096点以上のFFTの方法
-
Vba UserFormを前面に出す方法...
-
XnViewにwebpを「いつも開く」...
-
読み込み中にアクセス違反が発...
-
CreateObject関数について
-
C言語で実行時間を指定して終了...
-
VBA演習について
-
C言語で、文字をbmp形式の画像...
-
テキストボックスのエンターキ...
-
PICマイコンのコピー(クローン...
-
ExcelのVBAプログラム作成について
-
VBA実行中に他の作業をする
-
.NETプログラムが初回起動が遅い
-
ポケコンSHARP PC-G801 の使い方
-
COBOLの連絡領域について
-
このプログラミング誰か教えて...
-
google画像検索をしたい
-
未使用の変数を一括検索する方法
-
javaで特定の文字のカウントを...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
あるプログラムのコマンドライ...
-
Excelで4096点以上のFFTの方法
-
PICマイコンのコピー(クローン...
-
VBAにてメール作成した際、一部...
-
VBAでユーザーフォームが自動的...
-
読み込み中にアクセス違反が発...
-
excelのexe化について
-
【CASLプログラム】 定数(80と...
-
「Outlookが他のプログラムによ...
-
XnViewにwebpを「いつも開く」...
-
Vba UserFormを前面に出す方法...
-
未使用の変数を一括検索する方法
-
Excelに埋め込んだVBAのプログ...
-
モジュール、アプリケーション...
-
画像を読み込むのと取り込むの...
-
ドロップダウンリストの文字を...
-
WORD印刷できるがEXCE...
-
自動クエリとはどういうもので...
-
main関数を先頭に置くデメリット
-
UWSCで指定のフォルダを開きたい。
おすすめ情報