개별 항목에 대한 이미지 설정
확장된 콤보 상자 항목에서 사용하는 다양한 유형의 이미지는 COMBOBOXEXITEM 구조체의 iImage, iSelectedImage 및 iOverlay 멤버의 값에 따라 결정됩니다. 각 값은 컨트롤의 연결된 이미지 목록에 있는 이미지의 인덱스입니다. 기본적으로 이러한 멤버는 0으로 설정되어 컨트롤에 항목에 대한 이미지가 표시되지 않습니다. 특정 항목에 이미지를 사용하려는 경우 콤보 상자 항목을 삽입하거나 기존 콤보 상자 항목을 수정할 때 그에 따라 구조를 수정할 수 있습니다.
새 항목에 대한 이미지 설정
새 항목을 삽입하는 경우 적절한 값을 사용하여 iImage, iSelectedImage 및 iOverlay 구조체 멤버를 초기화한 다음 CComboBoxEx::InsertItem 호출을 사용하여 항목을 삽입합니다.
다음 예제에서는 확장된 콤보 상자 컨트롤()에 새 확장 콤보 상자 항목(cbi
m_comboEx
)을 삽입하여 세 가지 이미지 상태 모두에 대한 인덱스를 제공합니다.
COMBOBOXEXITEM cbi = { 0 };
COMBOBOXEXITEM cbi = { 0 };
CString str;
int nItem;
cbi.mask = CBEIF_IMAGE | CBEIF_INDENT | CBEIF_OVERLAY |
CBEIF_SELECTEDIMAGE | CBEIF_TEXT;
cbi.iItem = 0;
cbi.pszText = _T("Item 0");
cbi.iImage = 0;
cbi.iSelectedImage = 1;
cbi.iOverlay = 2;
cbi.iIndent = (0 & 0x03); //Set indentation according
//to item position
nItem = m_ComboBoxEx.InsertItem(&cbi);
ASSERT(nItem == 0);
기존 항목에 대한 이미지 설정
기존 항목을 수정하는 경우 COMBOBOXEXITEM 구조체의 마스크 멤버로 작업해야 합니다.
이미지를 사용하도록 기존 항목을 수정하려면
COMBOBOXEXITEM 구조를 선언하고 마스크 데이터 멤버를 수정하려는 값으로 설정합니다.
이 구조를 사용하여 CComboBoxEx::GetItem을 호출합니다.
적절한 값을 사용하여 새로 반환된 구조체의 마스크, iImage 및 iSelectedImage 멤버를 수정합니다.
CComboBoxEx::SetItem을 호출하여 수정된 구조를 전달합니다.
다음 예제에서는 세 번째 확장 콤보 상자 항목의 선택 및 선택되지 않은 이미지를 교환하여 이 절차를 보여 줍니다.
COMBOBOXEXITEM cbi = {0};
int iImageTemp;
cbi.mask = CBEIF_IMAGE | CBEIF_SELECTEDIMAGE;
cbi.iItem = 0;
m_ComboBoxEx.GetItem(&cbi);
iImageTemp = cbi.iImage;
cbi.iImage = cbi.iSelectedImage;
cbi.iSelectedImage = iImageTemp;
VERIFY(m_ComboBoxEx.SetItem(&cbi));