Visual C++ (MFC)

イベントメッセージルーチンは次の書式になります。


DefWindowProcを使用する方法

Visual C++の機能としてイベントメッセージルーチンを使用する方法です。
DefWindowProcを使用する場合、アプリケーションに関する全てのイベントが発生するたびにイベントメッセージルーチンが呼ばれます。

イベントメッセージルーチンの作成

[クラスビュー]で、イベントメッセージルーチンを追加するクラスにマウスを合わせ、右クリックします。
[追加(D)]-[関数の追加(U)]を選択します。[メンバ関数の追加ウィザード]ダイアログが表示されます。
以下の手順で関数を作成してください。

[戻り値の型(Y)]

LRESULT

[関数名(U)]

DefWindowProc

[パラメータの一覧(T)]

UINT

[パラメータ名(N)]

message

[追加(A)]

クリック

[パラメータの一覧(T)]

WPARAM

[パラメータ名(N)]

wParam

[追加(A)]

クリック

[パラメータの一覧(T)]

LPARAM

[パラメータ名(N)]

lParam

[追加(A)]

クリック

[アクセス(E)] 

protected

[Virtual]

ラジオボタンクリック

[関数の著名]が以下のようになっていることを確認し、[完了]ボタンをクリックします。

virtual LRESULT DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam);
{
    内容記述
}
return CDialog::DefWindowProc(message, wParam, lParam);

問題なく記述されていれば、イベントメッセージルーチンが作成されました。

 

ウィンドウハンドルの指定

イベントを使用するためには、アプリケーションのウィンドウハンドルをデバイスドライバに設定する必要があります。
イベントの設定には以下の関数を使用します。

アナログ入力

AioSetAiEvent

アナログ出力

AioSetAoEvent

カウンタ

AioSetCntEvent

タイマ

AioSetTmEvent

これらのイベント設定関数で、パラメータhWndにウィンドウハンドルを指定します。
Visual C++ .NETではMFCクラス内のメンバ変数m_hWndがウィンドウハンドルを所持していますので、このメンバ変数をそのまま指定してください。

Ret = AioSetAiEvent ( Id , m_hWnd , AiEvent )
Ret = AioSetAoEvent ( Id , m_hWnd , AoEvent )
Ret = AioSetCntEvent ( Id , CntChannel , m_hWnd , CntEvent )
Ret = AioSetTmEvent ( Id , TimerId , m_hWnd , TmEvent )