CComboBox

CComboBox는 종속 컨트롤이 있는 ComboBox 복합 컨트롤의 클래스입니다.

Description

ComboBox는 정적 제어와 결합된 선택용 목록 박스로 구성됩니다. 사용자가 컨트롤 옆에 있는 드롭다운 화살표를 선택할 때 컨트롤의 목록 상자 부분이 아래로 떨어질 수 있습니다

Declaration

   class CComboBox : public CWndContainer

Title

   #include <Controls\ComboBox.mqh>

상속 계층

  CObject

      CWnd

          CWndContainer

              CComboBox

아래에 제시된 코드의 결과:

ControlsComboBox

그룹별 클래스 메서드

Create

 

Create

컨트롤 생성

차트 이벤트 핸들러

 

OnEvent

모든 차트 이벤트의 이벤트 핸들러

Add

 

AddItem

컨트롤에 항목을 추가합니다

Settings

 

ListViewItems

컨트롤에 표시되는 항목 수를 설정합니다

Data

 

Select

인덱스별로 현재 목록 요소를 선택합니다

SelectByText

텍스트별로 현재 목록 요소를 선택합니다

SelectByValue

값별로 현재 목록 요소를 선택합니다

읽기전용 데이터

 

Value

현재 목록 요소의 값을 가져옵니다

종속 제어

 

CreateEdit

종속 컨트롤을 만듭니다(편집)

CreateButton

종속 컨트롤 생성 (버튼)

CreateList

종속 컨트롤을 만듭니다(목록 보기)

종속 컨트롤 이벤트 핸들러

 

OnClickEdit

"ClickEdit" 이벤트 핸들러(가상).

OnClickButton

"ClickButton" 내부 이벤트 핸들러 (가상)

OnChangeList

"ChangeList" 내부 이벤트 핸들러(가상)

드롭다운 목록 표시/숨기기

 

ListShow

항목 목록 보이기

ListHide

항목 목록 가리기

클래스 CObject에서 상속된 메서드

Prev, Prev, Next, Next, Type, Compare

클래스 CWnd에서 상속된 메서드

Name, ControlsTotal, Control, Rect, Left, Left, Top, Top, Right, Right, Bottom, Bottom, Width, Width, Height, Height, Size, Size, Size, Contains, Contains, Alignment, Align, Id, IsEnabled, IsVisible, Visible, IsActive, Activate, Deactivate, StateFlags, StateFlags, StateFlagsSet, StateFlagsReset, PropFlags, PropFlags, PropFlagsSet, PropFlagsReset, MouseX, MouseX, MouseY, MouseY, MouseFlags, MouseFlags, MouseFocusKill, BringToTop

클래스 CWndContainer에서 상속된 메서드

Destroy, OnMouseEvent, ControlsTotal, Control, ControlFind, MouseFocusKill, Add, Add, Delete, Delete, Move, Move, Shift, Id, Enable, Disable, Hide

콤보 상자 컨트롤을 사용하여 패널 만들기 예제:

//+------------------------------------------------------------------+
//|                                             ControlsComboBox.mq5 |
//|                        Copyright 2015, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2015, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property description "제어판 및 대화 상자. 데모 클래스 CComboBox"
#include <Controls\Dialog.mqh>
#include <Controls\ComboBox.mqh>
//+------------------------------------------------------------------+
//| 정의                                                          |
//+------------------------------------------------------------------+
//--- 틈
#define INDENT_LEFT                         (11)      // 왼쪽에서 들여쓰기(경계 너비 허용)
#define INDENT_TOP                          (11)      // 맨 위에서 들여쓰기(경계 너비 허용)
#define INDENT_RIGHT                        (11)      // 오른쪽에서 들여쓰기(경계 너비 허용)
#define INDENT_BOTTOM                       (11)      // 아래쪽에서 들여쓰기(경계 너비 허용)
#define CONTROLS_GAP_X                      (5)       // X 좌표에 의한 차이
#define CONTROLS_GAP_Y                      (5)       // Y 좌표에 의한 차이
//--- 버튼용
#define BUTTON_WIDTH                        (100)     // X 좌표에 의한 크기
#define BUTTON_HEIGHT                       (20)      // Y 좌표에 의한 크기
//--- 표시 영역용
#define EDIT_HEIGHT                         (20)      // Y 좌표에 의한 크기
//--- 그룹 컨트롤용
#define GROUP_WIDTH                         (150)     // X 좌표에 의한 크기
#define LIST_HEIGHT                         (179)     // Y 좌표에 의한 크기
#define RADIO_HEIGHT                        (56)      // Y 좌표에 의한 크기
#define CHECK_HEIGHT                        (93)      // Y 좌표에 의한 크기
//+------------------------------------------------------------------+
//| Class CControlsDialog                                            |
//| Usage: 제어 응용 프로그램의 주 대화 상자                   |
//+------------------------------------------------------------------+
class CControlsDialog : public CAppDialog
  {
private:
   CComboBox         m_combo_box;;                    // CComboBox 객체
 
public:
                     CControlsDialog(void);
                    ~CControlsDialog(void);
   //--- 생성
   virtual bool      Create(const long chart,const string name,const int subwin,const int x1,const int y1,const int x2,const int y2);
   //--- 차트 이벤트 핸들러
   virtual bool      OnEvent(const int id,const long &lparam,const double &dparam,const string &sparam);
 
protected:
   //--- 종속 컨트롤 생성
   bool              CreateComboBox(void);
   //--- 종속 제어 이벤트 핸들러
   void              OnChangeComboBox(void);
  };
//+------------------------------------------------------------------+
//| 이벤트 처리                                                   |
//+------------------------------------------------------------------+
EVENT_MAP_BEGIN(CControlsDialog)
ON_EVENT(ON_CHANGE,m_combo_box,OnChangeComboBox)
EVENT_MAP_END(CAppDialog)
//+------------------------------------------------------------------+
//| 생성자                                                      |
//+------------------------------------------------------------------+
CControlsDialog::CControlsDialog(void)
  {
  }
//+------------------------------------------------------------------+
//| 소멸자                                                       |
//+------------------------------------------------------------------+
CControlsDialog::~CControlsDialog(void)
  {
  }
//+------------------------------------------------------------------+
//| 생성                                                           |
//+------------------------------------------------------------------+
bool CControlsDialog::Create(const long chart,const string name,const int subwin,const int x1,const int y1,const int x2,const int y2)
  {
   if(!CAppDialog::Create(chart,name,subwin,x1,y1,x2,y2))
      return(false);
//--- 종속 컨트롤 생성
   if(!CreateComboBox())
      return(false);
//--- 성공
   return(true);
  }
//+------------------------------------------------------------------+
//| "ComboBox" 요소를 생성합니다                                    |
//+------------------------------------------------------------------+
bool CControlsDialog::CreateComboBox(void)
  {
//--- 좌표
   int x1=INDENT_LEFT;
   int y1=INDENT_TOP+(EDIT_HEIGHT+CONTROLS_GAP_Y)+
          (BUTTON_HEIGHT+CONTROLS_GAP_Y)+
          (EDIT_HEIGHT+CONTROLS_GAP_Y);
   int x2=x1+GROUP_WIDTH;
   int y2=y1+EDIT_HEIGHT;
//--- 생성
   if(!m_combo_box.Create(m_chart_id,m_name+"ComboBox",m_subwin,x1,y1,x2,y2))
      return(false);
   if(!Add(m_combo_box))
      return(false);
//--- 문자열로 채웁니다
   for(int i=0;i<16;i++)
      if(!m_combo_box.ItemAdd("Item "+IntegerToString(i)))
         return(false);
//--- 성공
   return(true);
  }
//+------------------------------------------------------------------+
//| 이벤트 핸들러                                                    |
//+------------------------------------------------------------------+
void CControlsDialog::OnChangeComboBox(void)
  {
   Comment(__FUNCTION__+" \""+m_combo_box.Select()+"\"");
  }
//+------------------------------------------------------------------+
//| 글로벌 변수                                                 |
//+------------------------------------------------------------------+
CControlsDialog ExtDialog;
//+------------------------------------------------------------------+
//| Expert 초기화 함수                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- 응용 프로그램 대화 상자 만들기
   if(!ExtDialog.Create(0,"Controls",0,40,40,380,344))
      return(INIT_FAILED);
//--- 어플리케이션 실행
   ExtDialog.Run();
//--- 성공
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert 초기화 해제 함수                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//--- 
   Comment("");
//--- 대화 상자 소멸
   ExtDialog.Destroy(reason);
  }
//+------------------------------------------------------------------+
//| Expert 차트 이벤트 함수                                      |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,         // 이벤트 ID  
                  const long& lparam,   // long 타입의 이벤트 매개 변수
                  const double& dparam, // double 타입의 이벤트 매개 변수
                  const string& sparam) // string 타입의 이벤트 매개 변수
  {
   ExtDialog.ChartEvent(id,lparam,dparam,sparam);
  }