none
How to make CMFCButton to radio button. CMFCButton으로 라디오버튼은 어떻게 만드나요? RRS feed

  • 질문

  • 사용환경: Visual Studio 2010

    리소스 편집기에서 라디오버튼을 추가하고 그 녀석을 CMFCButton으로 연결하였습니다.
    그런데 화면에 출력되기는 그냥 일반 버튼처럼 출력됩니다.
    게다가 클릭시에 DDX_Radio에서 ASSERT가 발생합니다.

    클래스의 멤버 함수들을 보면 분명 라디오버튼을 지원하는 것 같은데 왜 이런 것인가요?
    제가 무엇을 빠트렸을까요?

    2012년 8월 24일 금요일 오전 10:28

모든 응답

  • 리소스 편집기에서 "Radio Button" 컨트롤을 등록하고 컨트롤 변수로 CMFCButton 으로
    연결했다는 뜻인가요? Class Wizard 를 사용하면CMFCButton 으로는 연결이 않되고
    CButton 으로만 연결될텐데, 직접 입력하신건가요, 아니면 CButton 으로 생성한후에 임의로
    변경하신건가요?
    ( CButton 대신에 CMFCButton 을 사용해보고 싶으셔서 임으로 변경했는지 여부가 궁금합니다. )

     

    원래 버튼은 윈도우속성으로 구분되어지기 때문에 속성에 따라서 외형이 바뀔뿐이지 모두
    CButton 클래스를 사용 가능합니다. 따라서 CMFCButton 클래스가 CButton 클래스의
    자식 클래스이기 때문에 관려함수들이 다 존재하는것도 당연한 것입니다.

     

    마지막으로 CMFCButton 은 버튼에 텍스트와 이미지를 조합해서 출력할수 있는 기능과
    커서를 변경하거나 툴팁을 사용할수 있는 기능이 추가된것입니다.

    2012년 8월 28일 화요일 오전 4:59
    중재자
  • 네 CButton을 제가 직접 CMFCButton으로 변경했습니다.
    그냥 일반 버튼들은 그런식으로 잘 사용하고 있었기 때문에 당연히 되리라 생각했었습니다.

    게다가 CMFCButton이 선언되어있는 afxbutton.h 파일을 보면 아래와 같은 멤버함수들이 있습니다.

    	BOOL IsCheckBox() const { return m_bCheckButton; }
    	BOOL IsRadioButton() const { return m_bRadioButton; }
    	BOOL IsAutoCheck() const { return m_bAutoCheck; }
    	BOOL IsChecked() const { return  m_bChecked; }
    ...
    	void SetCheckedImage(HICON hIcon, BOOL bAutoDestroy = TRUE, HICON hIconHot = NULL, HICON hIconDisabled = NULL, BOOL bAlphaBlend = FALSE);
    	void SetCheckedImage(HBITMAP hBitmap, BOOL bAutoDestroy = TRUE, HBITMAP hBitmapHot = NULL, BOOL bMap3dColors = TRUE, HBITMAP hBitmapDisabled = NULL);
    	void SetCheckedImage(UINT uiBmpResId, UINT uiBmpHotResId = 0, UINT uiBmpDsblResID = 0);
    그래서 당연히 라디오버튼이나 체크박스로 사용이 가능하리라 예상했습니다.

    그런데 구글 검색을 통해봐도 라디오버튼으로 사용하는 것에 대해서는 안된다는 얘기들만 있어서 혹시 방법이 있는 것은 아닌가 문의 드린 것입니다.

    • 편집됨 TinyWolf 2012년 8월 29일 수요일 오후 9:03
    2012년 8월 29일 수요일 오후 9:02