티스토리 뷰

Document/Tech Doc

COMBO BOX

David_Kim 2016. 4. 16. 15:21
반응형


 

 

1 COMBO BOX?

 COMBO BOX(콤보 박스) EDIT CONTROL(에디트 컨트롤) LIST BOX(리스트 박스)를 결합해 놓은 컨트롤이고 필요할 경우만 목록을 열어 선택하므로 화면 공간을 적게 차지한다는 장점이 있습니다.하지만 LIST BOX처럼 목록을 한 번에 보는게 아니라 아래로 펼쳐야하므로 항목이 어떤 것들이 있는지 바로 확인할 수 없다는 단점이 있습니다.

 

 

1 COMBO BOX 생성

 

HWND _ComboBox = CreateWindowA("combobox","”,

//윈도우 생성을 하고 combobox를 생성

WS_CHILD|WS_VISIBLE|CBS_DROPDOWNLIST,

//윈도우 창 스타일, 2 1절에서 자세히 다룸

               10,

//combobox x좌표

               10,

//combobox y좌표

               200,

//combobox의 너비

               200,

//combobox의 높이

               hWnd,

//부모 윈도우를 지정

               0,

//combobox의 식별자(ID)인데 여기선 따로 지정하지 않음

               0,

//윈도우와 연결될 인스턴스 핸들

               0);

 

//CREATESTRUCT 구조체를 통해 전달되는 값이며, MDI 구조일 경우에는 CLIENTCREATESTRUCT 구조체를 사용함


 

2 COMBO BOX 사용 예

 

 



COMBO BOX부분 코드

 

void OnCreate(HWND hWnd)

{

           CreateWindowA("static","Kim JuYeon ",              

                     //윈도우를 생성하고 static control을 생성

                     WS_CHILD|WS_VISIBLE,

                     //윈도우 창 스타일, 2 1절에서 자세히 다룸

                     10,

                     //static x좌표

                     0,                  

                     //static y좌표

                     200,

                     //static의 너비

                     100,

                     //static의 높이

                     hWnd,

                     //부모 윈도우를 지정

                     0,

                     //static의 식별자(ID)인데 여기선 따로 지정하지 않음

                     0,

                     //윈도우와 연결될 인스턴스 핸들

                     0);

           //CREATESTRUCT 구조체를 통해 전달되는 값이며, MDI 구조일 경우에는 CLIENTCREATESTRUCT 구조체를 사용함

           HWND _ComboBox = CreateWindowA("combobox","",

                     //윈도우 생성을 하고 combobox를 생성

                     WS_CHILD|WS_VISIBLE|CBS_DROPDOWNLIST,

                     //윈도우 창 스타일, 2 1절에서 자세히 다룸

                     10,

                     //combobox x좌표

                     30,

                     //combobox y좌표

                     200,

                     //combobox의 너비

                     200,

                     //combobox의 높이

                     hWnd,

                     //부모 윈도우를 지정

                     0,

                     //combobox의 식별자(ID)인데 여기선 따로 지정하지 않음

                     0,

                     //윈도우와 연결될 인스턴스 핸들

                     0);

                     //CREATESTRUCT 구조체를 통해 전달되는 값이며, MDI 구조일 경우에는 CLIENTCREATESTRUCT 구조체를 사용함

           SendMessageA(_ComboBox,CB_ADDSTRING,0,(LPARAM)"FIRST");

           //SendMessage(A 32비트 W WIDE를 말함.) _ComboBox CB_ADDSTRING(ComboBox의 문자열을 추가하는 메시지),wParam 0이고,"FIRST"문자열을 써달라는 것.

           SendMessageA(_ComboBox,CB_ADDSTRING,0,(LPARAM)"SECOND");

           //SendMessage(A 32비트 W WIDE를 말함.) _ComboBox CB_ADDSTRING(ComboBox의 문자열을 추가하는 메시지),wParam 0이고,"SECOND"문자열을 써달라는 것.

           SendMessageA(_ComboBox,CB_ADDSTRING,0,(LPARAM)"THIRD");

           //SendMessage(A 32비트 W WIDE를 말함.) _ComboBox CB_ADDSTRING(ComboBox의 문자열을 추가하는 메시지),wParam 0이고,"THIRD"문자열을 써달라는 것.

}

 

LRESULT CALLBACK MyWndProc(HWND hWnd, UINT iMessage,WPARAM wParam,LPARAM lParam)

//(사건발생 윈도우개체,사건번호,사건을 처리하기위한 부가정보,wPararm : 사건 원인,lPararm : 사건 처리를 위한 어떤 것)

{

           switch(iMessage)

           {

           case WM_CREATE: OnCreate(hWnd);return 0;

           case WM_DESTROY: OnDestroy(hWnd);return 0;

           }

           return DefWindowProc(hWnd,iMessage,wParam,lParam);

}

 

 

 

 

2 COMBO BOX 스타일

 

l   CBS_AUTOHSCROLL 콤보박스의 에디트 컨트롤을 수평스크롤 할 수 있게 합니다.

  • CBS_DISABLENOSCROLL 리스트 내의 모든 항목이 화면 상에 나타나 있으면 수직스크롤 바를 사용 불가능하게 합니다.
  • CBS_DROPDOWN  에디트 컨트롤과 드롭다운 가능한 리스트 박스를 가집니다.
  • CBS_DROPDOWNLIST  리스트 박스만 가지며 에디트 컨트롤에 항목을 입력할 수 없습니다.
  • CBS_HASSTRINGS OWNER_DRAWN 콤보박스와 함께 사용되면 콤보 박스에 추가되는 문자열을 지정합니다.
  • CBS_LOWERCASE 에디트 컨트롤에 있는 모든 텍스트를 소문자로 변환합니다.
  • CBS_NOINTEGRALHEIGHT 콤보 박스의 크기를 조정할 수 없게 만듭니다..
  • CBS_OEMCONVERT ANSI 문자열에 있는 콤보 박스를 OEM 문자로 변환 합니다
  • CBS_OWNERDRAWFIXED  내용을 그리기 위한 리스트 박스의 항목 높이가 있습니다.
  • CBS_OWNERDRAWVARIABLE 내용을 그리기 위한 리스트 박스의 항목 높이가  있고, 각 항목은 크기가 변할 수 있습니다.
  • CBS_SIMPLE 항목 리스트 박스가 항상 화면에 나타나고 현재 선택된 내용이 에디터 박스에 나타납니다.
  • CBS_SORT 리스트박스에 입력한 문자열을 자동으로 정렬합니다.
  • CBS_UPPERCASE 에디트 컨트롤는 모든 텍스트를 대문자로 변환합니다.

 

 

 

 

 

1 절 윈도우 창 스타일

 

 

  • WS_BORDER 크기 조정 테두리가 있는 창을 만듭니다.
  • WS_CAPTION   제목 표시줄이 있는 창을 만듭니다(WS_BORDER 스타일 의미). WS_DLGFRAME 스타일과 함께 사용할 수 없습니다.
  • WS_CHILD   자식 창을 만듭니다. WS_POPUP 스타일과 함께 사용할 수 없습니다.
  • WS_CHILDWINDOW   WS_CHILD 스타일과 동일합니다.
  • WS_CLIPCHILDREN   부모 창 안에서 그릴 경우 자식 창이 차지하는 영역을 제외합니다. 부모 창을 만들 때 사용합니다.
  • WS_CLIPSIBLINGS 서로 상대적인 자식 창을 잘라냅니다. , 특정 자식 창이 paint 메시지를 받으면, WS_CLIPSIBLINGS 스타일은 다른 모든 겹쳐진 자식 창을, 업데이트 할 자식 창의 영역 밖으로 잘라냅니다. (WS_CLIPSIBLINGS가 지정되지 않았고 자식 창이 겹쳐진 경우, 어떤 자식 창의 클라이언트 영역 안에 그리기를 하면 인근 자식 창의 클라이언트 영역 안에 그려질 수 있습니다.) WS_CHILD 스타일의 경우에만 사용합니다.
  • WS_DISABLED 처음부터 비활성화되어 있는 창을 만듭니다.
  • WS_DLGFRAME   이중 테두리가 있고 제목이 없는 창을 만듭니다.
  • WS_GROUP   사용자가 한 컨트롤에서 다음 컨트롤로 화살표 키를 사용하여 이동할 수 있도록 컨트롤 그룹의 첫 번째 컨트롤을 지정합니다. 첫 번째 컨트롤 이후 WS_GROUP 스타일이 FALSE로 지정된 모든 컨트롤은 같은 그룹에 속합니다. 이후의 WS_GROUP 스타일 컨트롤은, 다음 그룹을 시작합니다 (, 하나의 그룹이 끝나고 다음 것을 시작).
  • WS_HSCROLL   가로 스크롤 막대가 있는 창을 만듭니다.
  • WS_ICONIC 처음부터 최소화되어 있는 창을 만듭니다. WS_MINIMIZE 스타일과 동일합니다.
  • WS_MAXIMIZE 최대화 된 창을 만듭니다.
  • WS_MAXIMIZEBOX   최대화 단추가 있는 창을 만듭니다.
  • WS_MINIMIZE 처음부터 최소화되어 있는 창을 만듭니다. WS_OVERLAPPED 스타일에서만 사용합니다.
  • WS_MINIMIZEBOX   최소화 단추가 있는 창을 만듭니다.
  • WS_OVERLAPPED 중첩된 창을 만듭니다. 중첩된 창에는 일반적으로 제목과 테두리가 있습니다.
  • WS_OVERLAPPEDWINDOW   WS_OVERLAPPED, WS_CAPTION, WS_SYSMENU, WS_THICKFRAME, WS_MINIMIZEBOX WS_MAXIMIZEBOX 스타일을 사용하여 겹친 창을 만듭니다.
  • WS_POPUP 팝업 창을 만듭니다. WS_CHILD 스타일과 함께 사용할 수 없습니다.
  • WS_POPUPWINDOW   WS_BORDER, WS_POPUP  WS_SYSMENU 스타일을 사용하여 팝업 창을 만듭니다. 컨트롤 메뉴를 보이게 하려면WS_CAPTION 스타일이 WS_POPUPWINDOW 스타일과 결합되어야 합니다.
  • WS_SIZEBOX 크기 조정 테두리가 있는 창을 만듭니다. WS_THICKFRAME 스타일과 동일합니다.
  • WS_SYSMENU 창의 제목 표시줄에 컨트롤 메뉴 상자가 있는 창을 만듭니다. 제목 표시줄이 있는 창에만 사용합니다.
  • WS_TABSTOP   사용자가 TAB 키를 사용하여 이동할 수 있는 컨트롤 중 하나를 지정합니다. TAB 키를 사용하면 WS_TABSTOP 스타일로 지정된 다음 컨트롤로 이동합니다.
  • WS_THICKFRAME 창 크기를 조정할 수 있는 두꺼운 프레임이 붙은 창을 만듭니다.
  • WS_TILED 중첩된 창을 만듭니다. 중첩된 창에는 제목 표시줄과 테두리가 있습니다. WS_OVERLAPPED 스타일과 동일합니다.
  • WS_TILEDWINDOW WS_OVERLAPPED, WS_CAPTION, WS_SYSMENU, WS_THICKFRAME, WS_MINIMIZEBOX  WS_MAXIMIZEBOX 스타일을 사용하여 중첩 창을 만듭니다. WS_OVERLAPPEDWINDOW 스타일과 동일합니다.
  • WS_VISIBLE 처음부터 표시되는 창을 만듭니다.
  • WS_VSCROLL   세로 스크롤 막대가 있는 창을 만듭니다.

 

 

 

3 COMBO BOX 메시지

 

 

 

l   CB_ADDSTRING 문자열을 목록 끝에 추가합니다.

l   CB_CLEAR  현재 선택된 콤보 박스의 에디트 컨트롤 모든 텍스트를 삭제합니다.

l   CB_COPY 현재 선택된 콤보 박스에 있는 모든 텍스트를 CF_TEXT 형식으로 클립보드에 복사합니다.

l   CB_CUT 현재 선택된 콤보 박스에 있는 모든 텍스트를 삭제하고, CF_TEXT형식으로 클립보드에 복사합니다.

l   CB_GETCOMBOBOXINFO CComboBox 개체에 대한 상태 정보를 가져옵니다.

l   CB_GETCOUNT 콤보 박스의 리스트에 있는 항목의 수를 가져옵니다.

l   CB_GETCURSEL 콤보 박스에 리스트가 있는 경우, 현재 선택된 항목의 인덱스를 가져옵니다.

l   CB_GETDROPPEDCONTROLRECT 화면 드롭 다운 콤보 박스의 리스트 박스의 좌표를 가져옵니다.

l   CB_GETDROPPEDSTATE 드롭 다운 리스트의 상태를 가져옵니다.

l   CB_GETDROPPEDWIDTH 드롭 다운 리스트의 픽셀의 최소 허용 폭을 가져옵니다.

l   CB_GETEDITSEL 현재 선택된 콤보 박스의 에디트 컨트롤의 문자열을 가져옵니다.

l   CB_GETEXTENDEDUI 콤보 박스의 UI 확장 상태를 가져옵니다.

l   CB_GETHORIZONTALEXTENT 콤보 박스의 리스트 박스의 가로 스크롤 폭을 가져옵니다.

l   CB_GETITEMDATA 인덱스로 콤보 박스 아이템과 연관된 32 비트 값을 가져옵니다.

l   CB_GETITEMDATAPTR 인덱스로 콤보 박스 아이템과 연관된 32 비트 값의 포인터를 가져옵니다.

l   CB_GETITEMHEIGHT 콤보 박스의 리스트의 높이를 가져옵니다.

l   CB_GETLBTEXT 콤보 박스의 리스트의 문자열을 가져옵니다.

l   CB_GETLBTEXTLEN 콤보 박스의 리스트의 문자열의 길이를 가져옵니다.

l   CB_GETLOCALE 콤보 박스에 사용되는 로케일 식별자(LCID)를 가져옵니다.

l   CB_GETMINVISIBLE 현재 콤보 박스 컨트롤의 드롭 다운 리스트에서 표시되는 항목의 최소 수를 가져옵니다.

l   CB_GETTOPINDEX 콤보 박스의 리스트 박스 부분에 표시되는 첫 번째 항목의 인덱스를 가져옵니다.

l   CB_LIMITTEXT 사용자가 콤보 박스의 에디트 컨트롤에 입력할 수 있는 텍스트의 길이를 바이트 단위로 제한합니다.

l   CB_PASTE 현재 커서 위치에 있는 에디트 컨트롤에 클립보드에 있는 데이터를 CF_TEXT 형식으로 붙여넣습니다.

l   CB_SETCUEBANNER 콤보 박스 컨트롤에 대해 표시되는 큐 텍스트를 설정합니다.

l   CB_SETCURSEL 콤보 박스의 리스트에서 문자열을 선택합니다.

l   CB_SETDROPPEDWIDTH 콤보 박스의 리스트의 허용되는 최소 너비를 설정합니다.

l   CB_SETEDITSEL 콤보 상자의 에디트 컨트롤에 문자를 선택합니다.

l   CB_SETEXTENDEDUI 콤보 상자의 UI를 기본 UI 또는, 확장 된 UI  중 하나로 설정합니다.

l   CB_SETHORIZONTALEXTENT 콤보 박스의 리스트 부분을 수평으로 스크롤 할 수 있는 폭을 설정합니다.

l   CB_SETITEMDATA 콤보 박스에서 지정된 아이템과 연관된 32 비트 값을 설정합니다.

l   CB_SETITEMDATAPTR 지정된 포인터가 될 수 있는 콤보 박스에서 지정된 아이템과 연관된 32 비트 값을 설정합니다.

l   CB_SETITEMHEIGHT 콤보 박스나 에디트 컨트롤(또는 스태틱 텍스트)의 리스트 높이를 설정합니다.

l   CB_SETLOCALE 콤보 박스에 사용되는 로케일 식별자를 설정합니다.

l   CB_SETMINVISIBLEITEMS 현재 콤보 박스 컨트롤의 드롭 다운 리스트에서 표시되는 항목의 최소 수를 설정합니다.

l   CB_SETTOPINDEX 특정 아이템이 콤보 박스의 리스트 박스 부분에 표시되도록 설정합니다.

l   CB_SHOWDROPDOWN 콤보 박스의 리스트를 표시하거나 숨기도록 설정합니다.

 

  

 

참 고 문 헌

 

 

https://msdn.microsoft.com/ko-kr/library/czada357.aspx


https://msdn.microsoft.com/ko-kr/library/12h9x0ch.aspx


https://msdn.microsoft.com/ko-kr/library/7h63bxbe.aspx

 


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

반응형

'Document > Tech Doc' 카테고리의 다른 글

Stored Procedure(저장 프로시저)  (0) 2016.04.17
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함