DOBON.NET DOBON.NETプログラミング掲示板過去ログ

C#のイベントとWindowメッセージの関連性に関して

環境/言語:[Windows環境、.NET]
分類:[.NET]

不具合ではなく、疑問に思ったため質問させて頂きました。
もし知見があればご教授頂けないでしょうか?

C#でメインフォームにボタンを1つ置き
ボタンをクリックするとButtonのClickイベントが
発生して対応するイベントハンドラが呼ばれます。
このとき、Windowメッセージとしては
WM_COMMANDが発生するかと思います。

一方、独自クラスで、独自イベント(eventにて定義)を
作成した場合、なんらかのタイミングでイベントを発生される
ことができますが、このときWindowメッセージは
発生するのでしょうか?
発生するのであるならばどんなメッセージになるのでしょうか?

eventで定義することによって、コンパイラによって
新たなWindowsメッセージが定義されるんでしょうか?
■No32188に返信(kikuさんの記事)
> このとき、Windowメッセージとしては
> WM_COMMANDが発生するかと思います。
>
> 一方、独自クラスで、独自イベント(eventにて定義)を
> 作成した場合、なんらかのタイミングでイベントを発生される
> ことができますが、このときWindowメッセージは
> 発生するのでしょうか?
> 発生するのであるならばどんなメッセージになるのでしょうか?

C++ ではなくて、.NET アプリを C# で作る時のことですよね? であれば WM_COMMAND は関係ないのでは? (自分が知らないだけという可能性は否定し切れませんが)

以下のチュートリアルが参考になると思いますので、目を通してみることをお勧めします。

デリゲートのチュートリアル
http://msdn.microsoft.com/ja-jp/library/aa288459(v=vs.71).aspx

イベントのチュートリアル
http://msdn.microsoft.com/ja-jp/library/aa288460(v=vs.71).aspx
> 一方、独自クラスで、独自イベント(eventにて定義)を
> 作成した場合、なんらかのタイミングでイベントを発生される
> ことができますが、このときWindowメッセージは
> 発生するのでしょうか?
> 発生するのであるならばどんなメッセージになるのでしょうか?
>
> eventで定義することによって、コンパイラによって
> 新たなWindowsメッセージが定義されるんでしょうか?

定義されませんし、Windowsメッセージも発生しません。
マネージ部分のイベントはWindowsメッセージとは何の関係もありません。
> C++ ではなくて、.NET アプリを C# で作る時のことですよね?

はい、そうです。

>であれば WM_COMMAND は関係ないのでは?
>(自分が知らないだけという可能性は>否定し切れませんが)

一通りチュートリアルを見てみました。
Windowメッセージに関しては一言も記述がないですね。
まったく別物と考えた方が良いようです。
2014/03/12(Wed) 19:08:49 編集(投稿者)

> 定義されませんし、Windowsメッセージも発生しません。
> マネージ部分のイベントはWindowsメッセージとは何の関係もありません。

ありがとうございます。
.NETのイベントはメッセージとは別物と考えた方が
良いのですね。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板