콤보 상자는 목록 상자와 정적 컨트롤 또는 편집 컨트롤이 결합으로 구성 됩니다. 컨트롤의 목록 상자 부분은 항상 표시 될 수 있습니다 또는 있습니다만 드롭 다운 컨트롤 옆에 있는 드롭다운 화살표를 선택할 때。
목록 상자에서 현재 선택 된 항목 (해당 되는 경우) 정적에 표시 하거나 제어를 편집 합니다. 또한, 콤보 상자는 드롭다운 목록 스타일을 하는 경우 사용자는 목록에 있는 항목 중 하나의 초기 문자를 입력할 수 및 목록 상자 표시 되는 경우 다음 항목과 초기 문자 강조 됩니다.
대화 상자 템플릿 또는 코드에서 직접 CComboBox 개체를 만들 수 있습니다. 두 가지 경우 모두 먼저 호출 생성자 CComboBoxCComboBox 개체; 생성 하 다음 컨트롤을 만들고 CComboBox 개체에 연결 만들기 멤버 함수 호출。
콤보 상자의 부모 (일반적으로: CDialog에서 파생 된 클래스)를 보내는 Windows 알림 메시지를 처리 하려는 경우 각 메시지에 대 한 부모 클래스에 메시지 맵 항목 및 메시지 처리기 멤버 함수를 추가。
각 메시지 맵 항목은 다음과 같은 형태를 가집니다.:
ON_(알림id,memberFxn)
알림을 처리 하도록 작성 했습니다 부모 멤버 함수 이름인 id 보내는 알림 및 memberFxn 콤보 상자 컨트롤의 자식 창 ID를 지정 하는 위치。
부모의 함수 프로토타입을 다음과 같습니다.:
afx_msgvoidmemberFxn();
특정 알림을 보낼 수 하는 순서를 예측할 수 없습니다. 특히, CBN_SELCHANGE 알림 전에 또는 CBN_CLOSEUP 알림 후에 발생할 수 있습니다.
잠재적인 메시지 맵 항목은 다음:
ON_CBN_CLOSEUPnbsp;??(Windows 3.1 이상입니다.) 콤보 상자의 목록 상자가 닫혔습니다. 이 알림 메시지는 CBS_SIMPLE 스타일 콤보 상자에 대 한 전송 되지 않습니다(&N).
ON_CBN_DBLCLKnbsp;??사용자 콤보 상자의 목록 상자에 문자열을 두 번 클릭 합니다. 이 알림 메시지는 CBS_SIMPLE 스타일 콤보 상자에 대 한만 전송 됩니다. CBS_DROPDOWN 또는 CBS_DROPDOWNLIST 스타일 콤보 상자에 대 한 번 한 번의 클릭 목록 상자를 숨깁니다 때문에 발생할 수 없습니다(&N).
ON_CBN_DROPDOWNnbsp;??콤보 상자의 목록 상자를 드롭 다운 (만들 수 볼 수) 있습니다. 이 알림 메시지는 CBS_DROPDOWN 또는 CBS_DROPDOWNLIST 스타일 콤보 상자에 대해서만 발생할 수 있습니다(&N).
ON_CBN_EDITCHANGEnbsp;??사용자는 콤보 상자의 편집 컨트롤 부분에 텍스트를 변경 해야 하는 동작을 촬영 하고있다. CBN_EDITUPDATE 메시지와 달리 Windows 화면을 업데이트 한 후이 메시지가 보내집니다. 콤보 상자는 CBS_DROPDOWNLIST 스타일 하는 경우에 전송 되지 않습니다(&N).
ON_CBN_EDITUPDATEnbsp;??콤보 상자의 편집 컨트롤 부분에 대 한 변경 된 텍스트를 표시 하는 것입니다. 이 알림 메시지는 컨트롤에는 텍스트 서식 지정에 있지만 텍스트를 표시 하기 전에 전송 됩니다. 콤보 상자는 CBS_DROPDOWNLIST 스타일 하는 경우에 전송 되지 않습니다(&N).
ON_CBN_ERRSPACEnbsp;??콤보 상자의 특정 요청을 충족 하기 위해 충분 한 메모리를 할당할 수 없습니다(&N).
ON_CBN_SELENDCANCELnbsp;??(Windows 3.1 이상입니다.) 사용자의 선택을 취소 해야 합니다 나타냅니다. 사용자 항목을 클릭 하 고 다른 창 또는 컨트롤 콤보 상자의 목록 상자를 숨기려면을 클릭 합니다. 이 알림 메시지는 CBN_CLOSEUP 알림 메시지를 사용자의 선택 무시 됩니다 전에 전송 됩니다. CBN_CLOSEUP 알림 메시지 ( CBS_SIMPLE 스타일 콤보 상자의 경우)에 전송 되지 않습니다 경우에 CBN_SELENDCANCEL 또는 CBN_SELENDOK 알림 메시지가 보내집니다(&N).
ON_CBN_SELENDOKnbsp;??사용자가 항목을 선택 다음 ENTER 키를 누르는 또는 콤보 상자의 목록 상자를 숨기려면 아래쪽 화살표 키를 클릭 합니다. 이 알림 메시지는 나타내는 사용자의 선택 간주 되어야 유효한 CBN_CLOSEUP 메시지 전에 전송 됩니다. CBN_CLOSEUP 알림 메시지 ( CBS_SIMPLE 스타일 콤보 상자의 경우)에 전송 되지 않습니다 경우에 CBN_SELENDCANCEL 또는 CBN_SELENDOK 알림 메시지가 보내집니다(&N).
ON_CBN_KILLFOCUSnbsp;??콤보 상자가 입력된 포커스를 잃고 있다(&N)。
ON_CBN_SELCHANGEnbsp;??콤보 상자의 목록 상자에서 선택이 목록 상자에서를 클릭 하거나 화살표 키를 사용 하 여 선택 영역을 변경 하면 변경 될 하려고 합니다. 이 메시지를 처리 하는 경우 콤보 상자의 편집 컨트롤에서 텍스트는 GetLBText 또는 다른 비슷한 기능을 통해만 검색할 수 있습니다. GetWindowText 를 사용할 수 없습니다(&N).
ON_CBN_SETFOCUSnbsp;??콤보 상자에서 입력된 포커스를 받습니다(&N).
사용자가 대화 상자를 닫으면 CComboBox 개체는 자동으로 소멸 됩니다 (대화 상자 리소스)를 통해 대화 상자 내의 CComboBox 개체를 만드는 경우。
다른 window 개체 내의 CComboBox 개체를 포함 하는 경우에 그것을 파괴 필요가 없습니다. 스택에 CComboBox 개체를 만드는 경우 자동으로 소멸 됩니다. 새 함수를 사용 하 여 힙에 CComboBox 개체를 만드는 경우 호출 해야 합니다 삭제 Windows 콤보 상자가 소멸 되 면 그것을 파괴 개체。