2. 2
컨트롤 윈도우에서 미리 정의해 둔 특정 사건을
구분하기 위한 코드
컨트롤 윈도우의 특정 사건
컨트롤 윈도우의 윈도우 프로시저에서
윈도우 메시지를 구현 하고 여기에 번호 붙여 놓은 것
둘 다 와 닿지 않으니까 그냥 패스, 예제 보면 금방 알아요
메시지 처리 유형 Ⅲ
유형번호는 중요치 않다
유형 Ⅲ도 컨트롤 윈도우 때문에 생긴 것
3. 3
컨트롤 윈도우의 특정사건 구분
어디에서 사건이 발생하더라도 WM_COMMAND 발생하니까
이 메시지의 부가정보에 뭔가 있을 듯
메뉴항목 선택
컨트롤 윈도우에서 부모 윈도우에 알림 코드 보낼 때
단축키 눌렸을 때
WM_COMMAND 메시지 발생하는 세 가지 경우
int wNofifyCode = HIWORD(wParam)
int wID = LOWORD(wParam);
HWND hWndCtrl = (HWND)lParam;
WM_COMMAND 부가정보
Notification Code
4. 4
버튼 윈도우의 Notification 코드
BN_CLICKED 클릭 코드
BN_DBLCLK 더블클릭 코드
BN_KILLFOUCS 키보드 포커스를 잃었을 때
편집 윈도우의 Notification 코드
EN_CHANGED 편집 창의 내용이 바뀜
EN_SETOCUS 편집 창이 키보드 포커스를 얻었을 때
버튼 이니까 BN으로 시작
편집(Edit) 이니까 EN으로 시작
7. 7
case WM_COMMAND:
int id;
id = LOWORD(wParam);
if (id == 888) {
char szMsg[1024];
GetWindowText(hEdt1, szMsg, 1024);
SetWindowText(hEdt2, szMsg);
}
else if (id == 999) {
int code;
code = HIWORD(wParam);
if (code == EN_CHANGE)
{
char szMsg[1024];
GetWindowText(hEdt1, szMsg, 1024);
SetWindowText(hEdt2, szMsg);
}
}
break;
…
}
상단의 편집 창에서 사건 발생하면
Notification 코드를 확인하여 처리
( 편집 창의 내용이 바뀌었다면 )
버튼 눌렀을 때
8. 8
Notification 코드에 대한 단상
Notification 코드는 컨트롤 윈도우의 메시지 처리 함수에서
필요하다고 판단되는 것들을 일부 구현해 놓은 것
예들 들어, 버튼 윈도우의 Notification 코드인 BN_CLICKED 같은 경우 WM_LBUTTONDOWN
과 WM_LBUTTONUP 메시지의 조합으로 볼 수 있다. WM_LBUTTONDOWN 메시지가 발생한
후 곧 바로 WM_LBUTTONUP 메시지가 발생하면 wParam의 상위워드에 미리 정의해둔 상수
BN_CLICKED을 넣고 부모 윈도우 메시지처리 함수에게 WM_COMMAND 메시지를 날리도록
구현한 것
윈도우 메시지의 조합에 따라 수많은 사건의 유형을 정의가능
미리 정의된 Notification 코드에
프로그래머가 필요로 하는 코드가 없을 수 있다
다 정의해 둘 수 없다