基本的には前回のものとほぼ同じなのですが、値を取得/操作するタイミングは、ほとんどの場合、任意のタイミングだと思うので、その方法について紹介します。
値取得/操作する方法として、コンボボックスのポインタを取得して、そのポインタから値取得/操作するようにします。
そのため、コンボボックスのポインタを取得する関数を用意します。(ここでは、「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;ここで注意点として、スタイルが「CBS_DROPDOWNLIST」のときに値を取得するには「pSrcCombo->GetItem()」としましたが、
CMFCToolBarComboBoxButton* pSrcCombo = GetComboBox();
if(pSrcCombo != NULL)
pSrcCombo->GetEditCtrl()->GetWindowText(strName);
スタイルが「CBS_DROPDOWN」のときは、「pSrcCombo->GetWindowText(strName)」でもなく、「pSrcCombo->GetEditCtrl()->GetWindowText(strName)」のように、子のエディットコントロールから取得します。