소프트웨어/Win32
Win32] CheckBox
cs만두
2016. 1. 17. 17:10
https://github.com/ManSung-Kim/Win32Study/blob/master/StudyWin32/MyCheckBox.cpp
Checkbox는 앞서 설명한 Button과 유사하게 추가한다.(http://mantdu.tistory.com/863)
static HWND hChk1; | |
switch(iMessage) { | |
case WM_CREATE: // 이곳에 BN_CLICKED 날라옴 | |
hChk1 = CreateWindow( // checkbox handle을 hChk1에 저장 | |
TEXT("button"), // class name | |
TEXT("Check1"), // btn label | |
WS_CHILD | WS_VISIBLE | BS_CHECKBOX, // pushbtn으로 사용함을 알림 | |
20,20,100,25, // x,y,w,h | |
hWnd, // parent window | |
(HMENU)CHK_1, // chkbox id | |
g_hInst, | |
NULL | |
); | |
return 0; |
약간 다른점은 Checkbox의 state를 얻어와서 사용해야하기때문에 CreateWindow 매서드를 생성할때 HWND를 저장해놓는다.(hChk1)
case WM_COMMAND: | |
switch(LOWORD(wParam)) { // wParam의 word low에 id날라옴 | |
//case menu1_id: /*do*/ break; | |
//case menu2_id: /*do*/ break; | |
//case accel_id: /*do*/ break; | |
case CHK_1: | |
switch(HIWORD(wParam)) { | |
case BN_CLICKED: // push | |
MessageBox(hWnd,TEXT("Hello"),TEXT("Button"),MB_OK); | |
if(SendMessage(hWnd,BM_GETCHECK,0,0)==BST_CHECKED) { // 체크상태이면 | |
SendMessage(hWnd,BM_SETCHECK,BST_UNCHECKED,0); // unCheck로 바꾸기 | |
} | |
break; | |
} | |
break; | |
} | |
return 0; |
Button일때와 마찬가지로 event 처리를 한다.
SendMessage(hWnd,BM_GETCHECK,0,0)==BST_CHECKED
이 함수로 체크상태를 얻어오고
SendMessage(hWnd,BM_SETCHECK,BST_UNCHECKED,0)
이 함수로 Checkbox의 state를 변경한다.