본문 바로가기

API

컨트롤과의 통신 컨트롤의 값 읽기 1. 핸들과 ID 차일드 컨트롤의 ID를 알고 있으면 HWND GetDlgItem(HWND hDlg, int nIDDlgItem); 함수로 이 컨트롤의 윈도우 핸들을 구할 수 있다. 반대로 컨트롤 핸들을 알고 있으면 HWND GetDlgCtrlID(HWND hwndCtl); 함수로 ID를 알 수 있다. 컨트롤은 윈도우이며 따라서 윈도우를 관리하기 위해서는 핸들이 필요하다. 그런데 핸들이라는 것은 그 특성상 운영체제가 일방적으로 발급하는 것이기 때문에 번호의 연속성이 없으며 그러다 보니 반복적인 처리에는 사용할 수 없다는 문제가 있다. 이 두 호출문을 합친 함수가 제공되는데 바로 다음 함수이다. 부모 대화상자의 핸들과 컨트롤의 ID만으로 편리하게 메시지를 보낼 수 있다. LONG Send.. 더보기
컨트롤(리스트,콤보 박스) 1. 리스트 박스 리스트박스는 선택 가능한 여러 개의 항목들을 나열해 놓고 그 중 하나(또는 여러개를 선택하는 컨트롤이며 여기서 항목이란 주로 문자열이다. "listbox"라는 윈도우 클래스로 생성한다. 스타일 설 명 LBS_MULTIPLESEL 여러 개의 항목을 선택할 수 있다. 이 스타일을 적용하지 않으면 디폴트로 하나만 선택할 수 있다. LBS_NOTIFY 사용자가 목록중 하나를 선택했을 때 부모 윈도우로 통지 메시지를 보낸다. LBS_SORT 추가된 항목들을 자동 정렬한다. LBS_OWNERDRAW 문자열이 아닌 비트맵이나 그림을 넣을 수 있다. LBS_STANDARD LBS_NOTIFY|LBS_SORT|WS_BORDER LBS_NOTIFY 스타일은 거의 필수적으로 선택하는 것이 좋으며, 그 외 .. 더보기
컨트롤(에디트) 에디트는 문자열을 직업 입력받을 때 사용. CreateWindow함수의 세 번째 인수로 지정한다. 스타일 설 명 ES_AUTOHSCROLL 수평 스크롤을 지원한다. ES_AUTOVSCROLL 여러 줄 편집시 수직 스크롤을 지원한다. ES_LEFT 왼쪽 정렬한다. ES_CENTER 중앙 정렬한다. ES_RIGHT 오른쪽 정렬한다. ES_LOWERCASE 소문자로 변환하여 표시한다. ES_UPPERCASE 대문자로 변환하여 표시한다. ES_MULTILINE 여러 줄을 편집할 수 있도록 한다. ES_NOHIDESEL 포커스를 잃더라도 선택된 영역을 표시한다. ES_READONLY 읽기전용으로 만들어 편집을 금지한다. 자신의 변화에 대해 다음과 같은 통지 메시지를 부모윈도우로 보낸다. 메시지 설 명 EN_CHA.. 더보기
컨트롤(라디오) 라디오 버튼도 일종의 버튼이며, "button"클래스에 BS_RADIOBUTTON, BS_AUTORADIOBUTTON 둘 중 하나의 스타일을 지정하면 라디오 버튼이 된다. 라디오 버튼은 여러가지 선택사항 중 한 가지만 선택할 필요가 있을 때 사용한다. 그룹을 이루는 첫 번째 라디오 버튼에만 WS_GROUP 스타일을 주고 나머지 라디오 버튼은 WS_GROUP 스타일을 주지 않으면 된다. 최초로 WS_GROUP을 가지는 라디오 버튼부터 다음 WS_GROUP 스타일을 가지는 라디오 버튼 직전 까지가 한 그룹이 된다. Radio.c #include "MsgProc.h" enum {ID_R1=101,ID_R2,ID_R3,ID_R4,ID_R5,ID_R6}; HWND r1,r2,r3,r4,r5,r6; int Grap.. 더보기
컨트롤(체크박스) 체크박스는 참, 거짓의 진위적인 선택을 입력받을 때 주로 사용된다. 스타일에 따라 4가지 종류의 체크박스가 있다. 선택가능한 옵션의 개수에 따라 두가지 상태를 가지는 체크박스(BS_CHECKBOX)와 세가지 상태를 가지는 체크박스(BS_3STATE)로 구분된다. 두가지 상태를 가지는 체크박스는 선택/비선택 세가지 상태를 가지는 체크박스는 선택/비선택/Grayed 동작방법에 따라 자동체크 박스와 수동체크 박스가 있다. 체크 박스의 상태가 변경될 때마다 어떤 처리를 해야하고 체크조건이 복잡한 경우라면 수동 체크 박스를 사용하고 필요할 때 상태를 조사하기만 하면 될 경우 자동 체크박스를 사용한다. 예를 들어 음소거같은경우 체크를 하면 음이 소거되어야 하며 대화상자가 닫힐 때 적용되는 것이 아니므로 수동으로 사.. 더보기