본문 바로가기

소프트웨어/Win32

Win32] CheckBox

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를 변경한다.



'소프트웨어 > Win32' 카테고리의 다른 글

Win32] Edit  (0) 2016.01.17
Win32] Button  (0) 2016.01.17
Win32] Bitmap Bitblt, StretchBlt  (0) 2016.01.17
Win32 공부를 시작하면서..  (0) 2016.01.06
Win32] Menu 만들기  (0) 2016.01.06
Win32 첫 소스(기본소스)  (0) 2016.01.06
VS2010] Resource .rc 다른편집기에서 열려있습니다.  (0) 2016.01.06