0

以前に尋ねられましたが、私が見つけたのはmfcであるか、スーパークラスのコントロール用ではなかったか、キーワードの選択が適切ではなかった可能性があります(私の語彙は限られています)

Devc++ で純粋な win32 と c++ で開発しています。Tab キーの押下と Return キーの押下を制御するスーパークラス化された編集コントロールがいくつかありますが、Tab を押すたびに、非常に迷惑なこの Ding サウンドが発生します。とにかく、どうすれば削除できますか?

これは私の最初のスーパークラス化の試みです。コードに関して他にアドバイスがあれば教えてください。

コード:

    LRESULT APIENTRY EditSuperClassWndProc ( HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam )
    {

        switch (message)
        {           
               case WM_KEYDOWN:

                      if ( isMyScreen )
                      {
                          if ( (int)wParam == VK_RETURN )
                          {
                              DWORD wparam = MAKELONG( 0, BN_CLICKED );
                              SendMessage( GetParent( hwnd ), WM_COMMAND, (WPARAM)wparam, (LPARAM)hButton );
                          }
                          else if ( (int)wParam == VK_TAB )
                          {
                               HWND nextInLine;

                               if( hwnd == hEditP )
                                   nextInLine = hEditL;
                               else if ( hwnd == hEditL )
                                   nextInLine = hEditP;

                               SendMessage( nextInLine, EM_SETSEL, (WPARAM)0, (LPARAM)-1 );
                               SetFocus( nextInLine );
                          }
                          else
                          {
                              return CallWindowProc( oldWndProc, hwnd, message, wParam, lParam );
                          }
                      }

                      return CallWindowProc( oldWndProc, hwnd, message, wParam, lParam );
                      break;

               default:

                     return CallWindowProc( oldWndProc, hwnd, message, wParam, lParam );
        }
    }
4

1 に答える 1

1

switch ブロックに次のコードを追加してみてください。

case WM_CHAR:
    if (wParam == VK_TAB)
    {
        return 0;
    }
    else
    {
        return CallWindowProc(oldWndProc, hwnd, message, wParam, lParam );
    }
    break;
于 2012-12-13T18:55:13.050 に答える