ABOUT ME

Today
Yesterday
Total
  • 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(비선택상태) 둘 중 하나를 인자로 전달

     

     

Designed by Tistory.