윈도우 프로시저에서 컨트롤, 메뉴, 엑셀러레이터 제어 방법
case WM_COMMAND:
switch(LOWORD(wParam))
{
case 메뉴1: break;
case 메뉴2: break;
case 엑셀러레이터: break;
case 컨트롤1:
switch(HIWORD(wParam))
{
case 통지코드1: break;
case 통지코드2: break;
}
break;
}
return 0;
버튼
윈도우 클래스 : button
스타일
BS_PUSHBUTTON
BS_DEFPUSHBUTTON : 사용자에게 디폴트로 반응함을 표현하는 버튼
BS_(AUTO)CHECKBOX : 2가지 상태
BS_(AUTO)3STATE : 3가지 상태
BS_(AUTO)RADIOBUTTON : 여러 그룹 중 하나 선택되면 나머지는 해제.
BS_GROUPBOX
※ 수동 CHECKBOX, 3STATE, RADIOBUTTON은 컨트롤에서 통지메세지가 발생했을 때 바로 반응하도록 프로그래밍 할 때 사용한다.
예시) 음소거 체크박스.
통지코드 : BN_CLICKED(버튼이 눌렸을 때)
에디트
윈도우 클래스 : edit
스타일
ES_AUTOHSCROLL, ES_AUTOVSCROLL : 자동 수평, 수직 스크롤바 포함
ES_LEFT, ES_CENTER, ES_RIGHT : 정렬방식 지정
ES_LOWERCASE, ES_UPPERCASE : 소문자 혹은 대문자로 변환하여 표시
ES_MULTILINE : 여러 줄 편집 가능
ES_NOHIDESEL : Focus를 잃어도 선택된 영역 표시
ES_READONLY : 읽기전용
통지코드
EN_CHANGE : 내용이 바뀌고 문자열이 화면에 출력되고 난 후
EN_UPDATE : 내용이 바뀌고 문자열이 화면에 출력되기 전에
사용예 : 문자열 길이에 따라 에디트의 폭을 늘리거나 문자열 내용을 지울 경우.
EN_ERRSPACE : 메모리 부족
EN_HSCROLL, EN_VSCROLL : 수평, 수직 스크롤바 클릭
EN_KILLFOCUS, EN_SETFOCUS : 포커스를 잃었다. 얻었다.
EN_MAXTEXT : 지정한 문자열의 길이 초과 시
※ 컨트롤도 일종의 윈도우이므로 윈도우 함수를 사용할 수 있다.
예) CreateWindow, MoveWindow, GetWindowText, SetWindowText등등.
리스트박스
윈도우 클래스 : listbox
스타일
LBS_MULTIPLESEL : 여러개 항목 선택 가능.
LBS_NOTIFY : 목록 중 하나를 선택했을 때 통지 메세지를 보냄.
LBS_SORT : 항목 자동 정렬
LBS_OWNERDRAW : 비트맵이나 그림 삽입 가능하게
LBS_STANDARD : LBS_NOTIFY | LBS_SORT | WS_BORDER
조작용 메시지(SendMessage로 제어)
LB_ADDSTRING : lParam으로 추가하고자 하는 문자열의 포인터를 넘김.
LB_DELETESTRING : wParam에 삭제할 항목의 index를 넘김.
LB_GETCURSEL : 현재 선택된 항목의 index 리턴.
LB_GETTEXT : 지정된 index의 문자열을 읽음. wParam : 항목번호, lParam : 문자열의 포인터.
LB_SETCURSEL : 선택할 항목을 wParam의 index로 지정.
통지메세지
LBN_DBLCLK
LBN_ERRSPACE : 메모리 부족
LBN_KILLFOCUS, LBN_SETFOCUS
LBN_SELCANCEL
LBN_SELCHANGE
콤보박스
윈도우 클래스 : combobox
에디트 + 리스트박스의 형태
스크롤바
윈도우 클래스 : scrollbar
스타일
SBS_HORZ : 수평 방향의 스크롤바
SBS_VERT : 수직 방향의 스크롤바
BOOL SetScrollRange(HWND hWnd, int nBar, int nMinPos, int nMaxPos, BOOL bRedraw);
스크롤바의 범위를 정한다.
hWnd : 스크롤바 윈도우 핸들
nBar : SB_CTL이면 별도의 컨트롤(붙박이식의 컨트롤이 아닌)임을 의미
nMinPos,nMaxPos : 최소값, 최대값
bRedraw : TRUE면 다시 그려줌.
int SetScrollPos(HWND hWnd, int nBar, int nPos, BOOL bRedraw);
스크롤바의 위치를 정한다.
hWnd : 스크롤바 윈도우 핸들
nBar : SB_CTL이면 별도의 컨트롤(붙박이식의 컨트롤이 아닌)임을 의미
nPos : 정할 위치 값.
bRedraw : TRUE면 다시 그려줌.
통지메세지
수평스크롤이 움직일 때는 WM_HSCROLL 발생.
수직스크롤이 움직일 때는 WM_VSCROLL 발생.
- LOWORD(wParam) : 스크롤 바의 어디가 눌렸는가?
SB_LINELEFT, SB_LINEUP, SB_PAGELEFT, SB_PAGEUP, SB_PAGERIGHT, SB_PAGEDOWN
SB_THUMBPOSITION : 스크롤 박스를 드래그 한 후 마우스 버튼을 놓았다.
SB_THUMBTRACK : 스크롤 박스를 드래그 하는 중.
- HIWORD(wParam) : 현재 위치
- lParam : 스크롤 바의 윈도우 핸들
Static
윈도우 클래스 : static
메세지를 스스로 처리 가능하므로 배치 후 신경 쓰지 않아도 됨.
'컴퓨터 공부 > Win32 API 프로그래밍' 카테고리의 다른 글
[5월 1일 3교시] 대화상자 2 + 메세지1 (0) | 2009.05.01 |
---|---|
[5월 1일 2교시] 대화상자 1 (0) | 2009.05.01 |
[숙제] 맵핑모드 (0) | 2009.05.01 |
[4월 30일 3교시] 그래픽4 + 컨트롤 (0) | 2009.04.30 |
[4월 30일 2교시] 그래픽3 (0) | 2009.04.30 |