MFC   VC++   Visual Studio   Visual Studio   プログラミング

CMFCToolBar上のコンボボックス その2

 前回、コンボボックスのスタイルが「CBS_DROPDOWNLIST」の場合の値の取得/操作の方法を紹介しましたが、今回は、「CBS_DROPDOWN」での値の取得、操作方法を紹介します。

 基本的には前回のものとほぼ同じなのですが、値を取得/操作するタイミングは、ほとんどの場合、任意のタイミングだと思うので、その方法について紹介します。

 値取得/操作する方法として、コンボボックスのポインタを取得して、そのポインタから値取得/操作するようにします。
 そのため、コンボボックスのポインタを取得する関数を用意します。(ここでは、「GetComboBox」)
 その関数内で以下のように処理し、コンボボックスのポインタを返すようにします。
CMFCToolBarComboBoxButton* CXXX::GetComboBox(void)
{
    CMFCToolBarComboBoxButton* pSrcCombo = NULL;
    CObList listButtons;
    if(CMFCToolBar::GetCommandButtons(ID_COMBOBOXBUTTON, listButtons) > 0)
    {
        for(POSITION posCombo = listButtons.GetHeadPosition(); pSrcCombo == NULL && posCombo != NULL;)
        {
            CMFCToolBarComboBoxButton* pCombo =
                DYNAMIC_DOWNCAST(CMFCToolBarComboBoxButton, listButtons.GetNext(posCombo));
            if(pCombo != NULL)
                pSrcCombo = pCombo;
        }
    }

    return pSrcCombo;
}
 その後、返ってきたポインタを使って値の取得/操作をします。
 以下に値を取得する方法を掲載します。
    CString strName;
    CMFCToolBarComboBoxButton* pSrcCombo = GetComboBox();
    if(pSrcCombo != NULL)
        pSrcCombo->GetEditCtrl()->GetWindowText(strName);
 ここで注意点として、スタイルが「CBS_DROPDOWNLIST」のときに値を取得するには「pSrcCombo->GetItem()」としましたが、
スタイルが「CBS_DROPDOWN」のときは、「pSrcCombo->GetWindowText(strName)」でもなく、「pSrcCombo->GetEditCtrl()->GetWindowText(strName)」のように、子のエディットコントロールから取得します。
ランキングへ     posted by 遠雷 | Comment(0) | MFC
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
※ブログオーナーが承認したコメントのみ表示されます。