-
Win32 API 8강. 컨트롤1(2) 버튼 컨트롤 - 푸시 버튼, 라디오 버튼, 체크 버튼Win32 API with 나우캠퍼스 2022. 8. 17. 23:53
3. 버튼 컨트롤
3.1 푸시 버튼
푸시 버튼 기초
▩ 생성
폼 도구 상자 + 드래그앤 드롭
▩ 기본 메시지
WM_COMMAND
LOWORD(wParam) : 아이디
푸시 버튼 3.2 라디오 버튼
라디오 버튼 생성
▩ 역할
- 여러 항목 중에서 하나 선택
▩ 생성
- 폼 + 도구상자 + 드래그앤드롭
▩ 기본 메시지
- WM_COMMAND
- LOWORD(wParam)
라이도 버튼 라디오 버튼 상태 조사
▩ 상태 조사 함수
UINT IsDlgButtonChecked( [in] HWND hDlg, [in] int nIDButton );
hDlg : 윈도우 핸들
nIDButton : 버튼 아이디
UINT 리턴 코드
BST_CHECKED 버튼 선택됨. BST_INDETERMINATE 버튼이 불확실한 상태(버튼에 BS_3STATE 또는 BS_AUTO3STATE 스타일이 있는 경우에만 적용됨) BST_UNCHECKED 버튼 선택되지 않음. 사용예시.
static char string[100]; int nRadioID[2] = { IDC_RADIO1, IDC_RADIO2 }; ---------생략 ----------- case WM_COMMAND: switch (wmid) { case IDC_BUTTON4: // 라디오 버튼 체크 for (int i = 0; i < 2; i++) { if (IsDlgButtonChecked(hDlg, nRadioID[i]) == BST_CHECKED) { sprintf_s(string, "%d번째 라디오 버튼 클릭", i+1); MessageBox(0, string, "체크", MB_OK); return (INT_PTR)TRUE; } } } break;
① 배열에 라디오 버튼의 아이디를 넣는다.
② 배열에 대해 반복문을 통해서 BST_CHECKED인지 조사한다
③ if문 실행
그룹 나누기
▩ 그룹별로 선택
▩ Group 속성 => True로 설정
상태 변경
▩ 상태?
선택 vs 비선택
▩ 상태 변경 함수
BOOL CheckDlgButton() BOOL CheckRadioButton()
CheckDlgButoon : 라디오 버튼을 개별적으로 체크해주는 함수
CheckRadioButton : 라디오 버튼을 그룹안에서 하나를 체크해주는 함수
CheckDlgButton()
▩ 역할
개별 선택 및 비선택 설정
▩ 원형
BOOL CheckDlgButton( [in] HWND hDlg, [in] int nIDButton, [in] UINT uCheck );
hDlg : 윈도우 핸들
nIDButton : 버튼 아이디
uCheck : BST_CHECKED(선택상태), BST_UNCHECKED(비선택상태) 둘 중 하나를 인자로 전달
CheckRadioButton()
▩ 역할
그룹 안에 있는 라디오 버튼 하나만 선택
▩ 원형
BOOL CheckRadioButton( [in] HWND hDlg, [in] int nIDFirstButton, [in] int nIDLastButton, [in] int nIDCheckButton );
hDlg : 윈도우 핸들
nIDFirstButton : 그룹의 시작 아이디
nIDLastButton : 그룹의 마지막 아이디
nIDCheckButton : 체크상태를 만들고자 하는 버튼의 아이디
3.3 체크 버튼
체크 버튼
▩ 역할
- 다수의 컨트롤 선택
- 다수의 선택 사항 파악
▩ 기본 메시지 처리
- WM_COMMAND
- LOWORD(wParam) : 아이디
체크 버튼 상태 조사
▩ 함수
UINT IsDlgButtonChecked( [in] HWND hDlg, [in] int nIDButton );
hDlg : 윈도우 핸들
nIDButton : 버튼 아이디
Return codeDescription
BST_CHECKED 버튼 체크 되어있음 BST_INDETERMINATE The button is in an indeterminate state (applies only if the button has the BS_3STATE or BS_AUTO3STATE style). BST_UNCHECKED 버튼 체크 안되어있음 상태 변경
▩ 함수
BOOL CheckDlgButton( [in] HWND hDlg, [in] int nIDButton, [in] UINT uCheck );
hDlg : 윈도우 핸들
nIDButton : 버튼 아이디
uCheck : BST_CHECKED(선택상태), BST_UNCHECKED(비선택상태) 둘 중 하나를 인자로 전달
'Win32 API with 나우캠퍼스' 카테고리의 다른 글
Win32 API 9강. 컨트롤2(2) 콤보 박스(Combo Box) (0) 2022.08.18 Win32 API 9강. 컨트롤2(1) 에디트 컨트롤 (0) 2022.08.18 Win32 API 8강. 컨트롤1(1) 컨트롤 기초와 Static Text (0) 2022.08.17 Win32 API 7강. 다이얼로그(3) 폼 기반의 윈도우 프로그램 (0) 2022.08.17 Win32 API 7강. 다이얼로그(2) 모델리스형 다이얼로그 (0) 2022.08.17