タグ

ブックマーク / www31.ocn.ne.jp/~yoshio2 (2)

  • WILL - Windows メッセージハンドラの追加…?

    MFCでは、クラスを右クリックして「Windows メッセージハンドラの追加」を選べばメッセージハンドラが追加できます。 …と思ったんですが、どうもすべてのメッセージに対するハンドラを作成できるわけではないようです。 今回つまづいたのは、WM_POWERBROADCAST というWindowsメッセージです。 これは上記の方法ではハンドラを追加できません(メッセージ一覧に出てきません)。 というわけで、MSDNライブラリをあさってみました。 以下の方法でできます。 メッセージをハンドルするクラスの.cppファイルを開きます。 今回は MainFrame.cpp でハンドルします。 (ビューにはWM_POWERBROADCASTメッセージは飛んでいかないようです。Spy++で調べましょう) ファイルの最初のほうの BEGIN_MESSAGE_MAP とか書いてあるところを以

    goinger
    goinger 2008/10/31
  • WILL - MFC でコールバック関数を使う

    コールバック関数という技というか手法というか、そういうのがあります。 関数のアドレスを渡しておいて、何かあったときに呼んでもらうとか、そういった使い方をされます。 他の使い方もあるのかもしれませんが。 最初に私がコールバック関数を使ったのは、MIDI鍵盤「MidKey」にMIDI入力機能をつけたときです。 midiInOpen というAPIでMIDI入力デバイスを開くときに、コールバック関数のアドレスを渡しておきます。 そうすると、MIDI入力があったときにWindowsがコールバック関数を呼び出すことで知らせてくれるんです。 が。 なんか忘れがちですが、MFCはかなりオブジェクト指向です。 言い換えると、プログラムのほとんどの部分がクラスになっています。 これはどういう事かというと、プログラムの実行時にならないと(クラスがインスタンス化されないと)関数のアドレス(ポイン

  • 1