SDK32:2つのENTERキーの違い

JP77550の文書、MSのサイト内から消えてGoogleのキャッシュにしか引っかからなくなってるので、後々の自分の為にメモ。

ユーザーが押下したENTERキーが標準キーボード側のENTERキーなのか、テンキー側の ENTERキーなのかを判断したい場合、
どちらの動作もwParamに仮想キーコードのVK_RETURNが設定されて、WM_KEYDOWNメッセージとWM_KEYUPメッセージが発行される。
メッセージのlParamの24ビットめをチェックする。キーが拡張キーならばビット24は1になり、そうでなければ0になっている。
(これらのメッセージのlParamの内容は、SDK バージョン3.0の「プログラマーズリファレンス Vol.1 概要」と、「プログラマーズ リファレンス Vol.3 メッセージ、構造体、マクロ」のドキュメントに記述されている)
テンキー側にあるキー(ファンクションキーも含めて)は拡張キーになる。

サンプルコード:


  case WM_KEYDOWN:
  {
    if (wParam == VK_RETURN)
    {
      if (lParam & 0x1000000L)
      {
        // テンキー側のENTERキー
      }
      else
      {
        // 標準キーボード側の ENTER
      }
    }
  } break;
この記事のオリジナルはKB77550です。


こういう情報って全部は記憶してらんないから、随時調べるのであって、
古いからってサイトから消えてもらっては困るんだけどなぁ。