* 컨트롤도 하나의 윈도우이다
* 화면상의 일정한 영역을 차지
* 자신의 고유 메세지를 처리할 수 있는 능력을 가짐
* But, 진짜 윈도우처럼 타이틀 바나 경계선을 가지고 독립적으로 사용되는 것은 아님.
(부모 윈도우의 차이들로 존재해야 함 - WS_CHILD 필수)
* 부모 윈도우가 파괴될때 같이 파괴
* 윈도우즈에 미리 정의되어 있는 클래스
* CreateWindow 함수 이용
<부모와의 통신>
* 뭔 일이 생겼을때 부모 윈도우로 Notification Message를 보내준다.
* 버튼을 클릭할 경우 WM_COMMAND 메세지를 부모 윈도우에게 보내며 이때 전달되는 정보는 다음과 같다.
* 통지코드는 차일드 컨트롤이 왜 메세지를 보냈는가를 나타냄 (ex: 버튼은 항상 BN_CLICKED)
* WM_COMMAND 메시지는 컨트롤의 통지 메세지뿐만 아니라 메뉴 항목, 액셀러레이터 등의 명령을 처리하는 중요한 일을 한다.
* 사용자로부터의 명령이 될만한 것들을 모두 처리한다.
이때, 컨트롤의 ID, 메뉴 ID, 액셀러레이터 ID 등의 모두 LOWORD(wParam)으로 전달되므로 이 세가지 명령들끼리는 0 ~ 65535까지의 범위에서 unique한 ID를 가져야 한다.
또한 그중에서도 컨트롤의 통지 메세지는 통지 코드에 따라 처리를 달리해야 한다.
* WM_COMMAND 메시지의 일반적인 모양
case WM_COMMAND:
switch(LOWORD(wParam) { // ID에 따른 분기
case 메뉴1:처리1;break;
case 메뉴2:처리2;break;
case 액셀러레이터1:처리3;break;
case 컨트롤1:
switch(HIWORD(wParam)) { // 통지 코드에 따른 분기
case 통지코드1:처리1;break;
case 통지코드2:처리2;break;
...........
}
break;
}
return 0;
* 화면상의 일정한 영역을 차지
* 자신의 고유 메세지를 처리할 수 있는 능력을 가짐
* But, 진짜 윈도우처럼 타이틀 바나 경계선을 가지고 독립적으로 사용되는 것은 아님.
(부모 윈도우의 차이들로 존재해야 함 - WS_CHILD 필수)
* 부모 윈도우가 파괴될때 같이 파괴
* 윈도우즈에 미리 정의되어 있는 클래스
윈도우 클래스 | 컨트롤 |
button | 버튼, 체크, 라디오 |
static | 텍스트 |
scrollbar | 스크롤 바 |
edit | 에디트 |
listbox | 리스트 박스 |
combobox | 콤보 박스 |
* CreateWindow 함수 이용
<부모와의 통신>
* 뭔 일이 생겼을때 부모 윈도우로 Notification Message를 보내준다.
* 버튼을 클릭할 경우 WM_COMMAND 메세지를 부모 윈도우에게 보내며 이때 전달되는 정보는 다음과 같다.
인수 | 설명 |
HIWORD(wParam) | 통지코드 |
LOWORD(wParam) | 컨트롤의 ID |
lParam | 메시지를 보낸 차일드 윈도우의 윈도우 핸들 |
* WM_COMMAND 메시지는 컨트롤의 통지 메세지뿐만 아니라 메뉴 항목, 액셀러레이터 등의 명령을 처리하는 중요한 일을 한다.
* 사용자로부터의 명령이 될만한 것들을 모두 처리한다.
이때, 컨트롤의 ID, 메뉴 ID, 액셀러레이터 ID 등의 모두 LOWORD(wParam)으로 전달되므로 이 세가지 명령들끼리는 0 ~ 65535까지의 범위에서 unique한 ID를 가져야 한다.
또한 그중에서도 컨트롤의 통지 메세지는 통지 코드에 따라 처리를 달리해야 한다.
* WM_COMMAND 메시지의 일반적인 모양
case WM_COMMAND:
switch(LOWORD(wParam) { // ID에 따른 분기
case 메뉴1:처리1;break;
case 메뉴2:처리2;break;
case 액셀러레이터1:처리3;break;
case 컨트롤1:
switch(HIWORD(wParam)) { // 통지 코드에 따른 분기
case 통지코드1:처리1;break;
case 통지코드2:처리2;break;
...........
}
break;
}
return 0;
'오래된 흔적 > Win32 API' 카테고리의 다른 글
답변을 한참 보고 난 후에야 웃었눼.. 흐흐.. 나두 풀어봐야쥥~~ ㅎ (0) | 2009.08.14 |
---|---|
컨트롤 일반 (0) | 2009.05.11 |
컨트롤 - 에디트 (0) | 2009.05.11 |