目次に戻る
一覧ページに戻る
CPWindow::AttachKeyEvent
2001/12/31 update.
キーボード操作が行われたときに呼ばれるコールバック関数を設定します。

書式

  typedef void (* LP_KEYPROC)(CPWindow *,CPSTKeyEvent);
  void AttachKeyEvent(LP_KEYPROC KeyEvent);

パラメータ


KeyEvent
「void xxxx(CPWindow *,CPSTKeyEvent)」型のstatic関数を指定します。
コールバック関数の第一引数にCPWindowクラスのポインタ、第二引数にキーボードの状態が格納されたCPSTKeyEvent構造体の情報が入ります。

解説


キーボード操作が行われたときに呼ばれるコールバック関数を設定します。
なお、コールバック関数は必ずstaticの静的関数である必要があります。

コールバック関数の第二引数の「CPSTKeyEvent」では、EventCode に「CP_KEYEVENT_KEYDOWN / CP_KEYEVENT_KEYUP」が入ります。
コールバックを解除する場合は「DetachKeyEvent( )」を呼び出してください。





ウィンドウ(ダイアログ)を生成して、その中でコールバック関数よりキーボードイベントを取得します。

CPWindow win;

//キーボードイベントを受け取る
static void OnKeyEvent(CPWindow *lpWin,CPSTKeyEvent ev)
{
    //キーが押された場合
    if(ev.EventCode==CP_KEYEVENT_KEYDOWN)
    {
        int CharCode;
        int KeyData;

        //キャラクタコードの取得
        CharCode=ev.CharCode;

        //同時に押されているキー情報の取得
        KeyData=ev.KeyData;
    }
}

void main()
{
    //ダイアログを生成する
    win.Clear();
    win.CreateNewDialog("TestDialog",120,120,120,120);

    //キーボードイベントのコールバック関数指定
    win.AttachKeyEvent(OnKeyEvent);

    //ダイアログの表示・イベントループの開始
    win.DoModal();
}

この例では、キーボードイベントが発生した場合に、「OnKeyEvent」関数が呼ばれます。
例えば、[Ctrl]キーが押された状態で[a]キーが押されたとき、「CharCode='a' / KeyData=CP_KEY_CTRL_MASK」が入ります。


ビルド時に必要なファイル


ライブラリ :CPartsLib.lib (Macintoshの場合は、CPartsCW.a)
ヘッダ :CPWindow.h


関連リンク


CPWindowクラス
CPWindow::DetachKeyEvent