1. 대화상자 기반 MFC 에서 다이얼로그에 Extended Combo Box 를 클릭하고 아무대나 추가한다.
2. Extended Combo Box 를 오른쪽 클릭해서 변수추가를 누른다. 아래와같은 변수를 입력하고 마침
3. 클래스에 CImageList m_ImgList; 추가
4. 소스의 OnInitDialog() 메서드에 아래 내용 추가
// 이미지 리스트 생성
CBitmap Bmp;
Bmp.LoadBitmapW(IDB_BITMAP1);
m_ImgList.Create(15,15, ILC_COLOR24, 8 ,0);
m_ImgList.Add(&Bmp, RGB(255,0,0));
m_ComboEx2.SetImageList(&m_ImgList); //SetImageList 메서드를 호출하여 이미지목록 연결
// 리스트 아이템 추가
CString strTmp = _T("");
COMBOBOXEXITEM cbi;
::ZeroMemory(&cbi, sizeof(cbi));
cbi.mask = CBEIF_IMAGE | CBEIF_SELECTEDIMAGE | CBEIF_TEXT;
for(int i = 0; i <7; ++i)
{
strTmp.Format(_T("%d th Item"), i);
cbi.iItem = i;
cbi.iImage = i;
cbi.iSelectedImage = i;
cbi.pszText =(LPWSTR)(LPCTSTR)strTmp;
m_ComboEx2.InsertItem(&cbi);
}
m_ComboEx2.SetCurSel(0); //초기화시 인덱스의 위치 // 1로하면 초기화시에 1번인덱스에 가있다
설명
typedef struct tagCOMBOBOXEXITEMW
{
UINT mask; //구조체의 멤버들중에서 어떠한 멤버의 값이 유효한지 들어갑니다. (소스에선 iItem , iImage , iSelectedImage )
INT_PTR iItem; // 추가할 항목의 인덱스(여기선 for문으로 증가)
LPWSTR pszText; //문자열을 저장한 버퍼의 주소
int cchTextMax; //문자열최대길이
int iImage; // 최초상태에서 출력할 이미지 인덱스
int iSelectedImage; //선택한 상태에서 출력할 이미지 인덱스 여기선 같다
int iOverlay; // 드래그 이미지의 인덱스(소스에선 사용 x)
int iIndent; // 들여쓰기할 크기 (자세한건 msdn ㅠㅠ)
LPARAM lParam; //msdn.
} COMBOBOXEXITEMW, *PCOMBOBOXEXITEMW;
m_ComboEx2.SetCurSel(0);
[출처] MFC 이미지 콤보상자 만들기|작성자 gunny