本ページは公開が終了した情報の複製であり、掲載時点での情報です。本ページに記載されている内容について各所に問い合わせることはご遠慮下さい。
サポート技術情報

[MSVC] VBX コントロールのタブストップを無効にしたい

文書番号: 403827

最終更新日: 2004/03/31


この資料は以下の製品について記述したものです。


概要

この資料は VBX コントロールのタブストップを無効にする一つの方法を紹介した
ものです。

詳細

<QUESTION>

VBX コントロールを AppStudio を使ってダイアログに張り付けると、
そのコントロールにタブストップしてフォーカスが移動してしまいます。
何とかそのコントロールにフォーカスが移動しないようにしたいのですが。

<ANSWER>

Visual Basic 上でプロパティ (TabStop) を使用できない VBX コントロールは
AppStudio でタブストップの設定が出来なくなっています。
これは Visual Basic 上で使う場合と状況が異なっています。
このような TabStop プロパティの無いコントロールのタブストップの設定を外す
には、以下の様な処理を行わなければなりません。

1 CDialog から派生したクラス (CMyDialog) に張り付ける場合

タブストップの設定を外したいコントロールの ID が IDC_VBX1 の場合。
  1. ClassWizard で WM_INITDIALOG メッセージをハンドルする関数を作ります。 ClassWizard は標準で OnInitDialog 関数を作成します。
  2. この関数に VBX コントロールのスタイルを変更する処理を付け加えます
            CMyDialog::OnInitDialog()
            {
              CDialog::OnInitDialog()
         HWND hwndVBX = GetDlgItem(IDC_VBX1)->GetSafeHwnd();
              LONG dwStyle = GetWindowLong(hwndVBX,GWL_STYLE);
              dwStyle &= ~((LONG) WS_TABSTOP);
              SetWindowLong(hwndVBX,GWL_STYLE,dwStyle);
              // その他の初期化処理を行います
              // ...
             }
    

2 CFormView から派生したクラス (CMyForm) に張り付ける場合

タブストップの設定を外したいコントロールの ID が IDC_VBX1 の場合。
  1. OnInitialUpdate() 関数を CMyForm クラスに継承します。
  2. OnInitialUpdate() に以下の処理を追加します。
         CMyForm::OnInitialUpdate()
         {
          CFormView::OnInitialUpdate()
          HWND hwndVBX = GetDlgItem(IDC_VBX1)->GetSafeHwnd();
          LONG dwStyle = GetWindowLong(hwndVBX,GWL_STYLE);
          dwStyle &= ~((LONG) WS_TABSTOP);
          SetWindowLong(hwndVBX,GWL_STYLE,dwStyle);
          // その他の初期化処理を行います
          // ...
         }
    

詳細

  • Visual C++ は、米国 Microsoft Corporation の商標です。

Keywords: KBHOWTO VC10 VC15 KB403827
Technology: kbAudDeveloper kbvc150 kbVCsearch

inserted by FC2 system