• 締切済み

メッセージハンドラ

超素人です。 研究でこれからMFCを使います。そこで、全くわからないのでテンプレートを用いようとしたのですが、メッセージハンドラと記述されている部分が何かわかりません。 ダイアログはわかったのですが、メッセージハンドラってなんですか? また、VC++6.0でテンプレを用いると、Dlg.cppの中のDDX_ControlやON_BN_CLICKEDの分がコメントでもないのに、灰色で記述されています。これはなぜでしょうか? ウェブでよんでもわからなかったので、投稿しました。よろしくお願いします。

みんなの回答

  • nim05
  • ベストアンサー率61% (111/181)
回答No.2

メッセージハンドラは何か?ですが、その前に、「イベント駆動」型プログラミングというのは分かりますか? http://ja.wikipedia.org/wiki/%E3%82%A4%E3%83%99%E3%83%B3%E3%83%88%E9%A7%86%E5%8B%95%E5%9E%8B%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0 簡単に言うと、マウスやキーボードから入力された、とか、ウィンドウが画面に表示された、など、アプリケーションにとって、何かしなければいけない変化が発生した時に、「イベント」が起こります。 このイベントが起こったぞ!という「メッセージ」がOSから伝えられたら、アプリケーションがそれに応じた個々処理する関数を「メッセージハンドラ」といいます。 テンプレートのメッセージハンドラは、必ず、何らかのイベントに対応しているので、何が起こったときに呼ばれるのかを調べていくと、何となくつかめるんじゃないでしょうか。 で、灰色になっているのは、redfox63 さんがおっしゃるとおりですが、簡単に言うと、VCが自動的に挿入してくれた部分なので、気を利かせて灰色で表示してあげているだけです。コメントアウトされているわけではありません。

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

DDX_ControlやON_BN_CLICKEDなどは VC6のクラスウィザードが管理している部分です 灰色になっているのは その前後にMFCの管理用マクロがあるためです //{{AFX_MSG_MAP(Cxx,Cxxxx) ここにON_BN_CLICKEDなどがある //}}AFX_MSG_MAP のように AFX_MSG_MAPなどがMFC固有のマクロです メッセージマップは ハンドラとWindowsメッセージを結びつけるものです DDX_Controlは AFX_DATA_MAPによりコントロールとメンバー変数を結びつけるものです

関連するQ&A