1. 컨트롤 기초
2. 버튼 컨트롤
1. 컨트롤 기초
※ 생성 방법
- CreateWindow()
- 폼 + 도구 상자
- Static Text는 단순 문자열 출력 도구이다.
※ 컨트롤 아이디 : 중복되지 않는 양의 정수값
→ Visual Studio에서 자동으로 할당. IDC_XXXX로 시작한다.
※ 컨트롤의 윈도우 핸들 GetDlgItem()
HWND GetDlgItem(
HWND hDlg,
int nIDDlgItem
);
※ 컨트롤 메시지 처리 WM_COMMAND
- LOWORD(wParam) 아이디 → 여러 컨트롤 구분
- HIWORD(wParam) 컨트롤 상태, 통지 코드
:: 통지코드 예시
BN_CLICKED 버튼이 클릭된 상태
BN_DBCLICK 버튼이 더블클릭된 상태
BN_SETFOCUS 버튼이 선택된 상태
BN_DISABLE 버튼 사용 불가 상태
※ 컨트롤 속성
기본 속성
속성 | 역할 |
Caption | 컨트롤에 표시되는 텍스트 |
ID | 컨트롤의 아이디 |
Visible | 컨트롤의 출력 여부를 결정 |
2. 버튼 컨트롤
: 푸시, 라디오, 체크 버튼
→ 생성 방법 ?
폼 + 도구 상자 + 드래그 앤 드롭 (위에서 한 방식과 같다)
사용 시 기본 메세지 WM_COMMAND가 발생하고, 각각의 버튼에 해당되는 LOWORD(wParam) 아이디를 이용하면 된다.
① 푸시 버튼
② 라디오 버튼
역할 : 여러 항목 중에서 하나 선택
※ 상태 조사 함수 IsDlgButtonChecked
UINT IsDlgButtonChecked(
HWND hDlg,
int nIDButton
);
리턴 코드 : BST_CHECKED, BST_UNCHECKED, BST_INDETERMINATE
체크된 라디오 버튼 각각을 구분하기 위해서 배열을 선언한 후, 몇 번째 라디오 버튼이 눌렸는지 상태를 확인하여 출력하는 코드이다.
※ 상태(선택/비선택) 변경
상태 변경 함수
1) BOOL CheckDlgButton()
: 임의로 개별 선택 및 비선택 설정
BOOL CheckDlgButton(
HWND hDlg,
int nIDButton,
UINT uCheck //BST_CHECKE, BST_UNCHECKED
);
2) BOOL CheckRadioButton()
: 그룹 안에 있는 라디오 버튼 하나만 임의로 선택
그룹? Group 속성을 TRUE로 설정하면 됨
BOOL CheckRadioButton(
HWND hDlg,
int nIDFirstButton,
int nIDLastButton,
int nIDCheckButton
);
만약 라디오 버튼 4,5,6을 추가하고 이 셋을 하나의 그룹으로 만들고자 한다면, 라디오 4의 Group 설정만 TRUE로 하면 된다.
③ 체크 버튼
: 다수의 컨트롤 선택, 다수의 선택 사항 파악
화면에 On, Off를 표시하기 위해서 InvalidateRect 를 사용한다.