2012-05-22 8 views
0

라디오 버튼처럼 작동하도록 2 개의 체크 박스를 응용 프로그램에서 얻으려고합니다. IE - 하나가 체크되면 다른 버튼이 해제됩니다. 나는 이것이 속성 메뉴를 통해 성취 될 수 있다고 생각하지 않으므로 코드에서 그것을 시도하고있다.C++ 체크 박스가 라디오 버튼처럼 작동합니다. WINAPI (No MFC)

나는 이것을 전혀하는 방법에 대해 많이 모른다. 그래서 나는 조금 길을 잃어 가고있다. 이것은 내가 (작동하지 않는) 지금까지 무엇을 가지고

case BN_CLICKED: 
    if(BN_CLICKED == IDC_CHECK_MW){ 
     SendMessage(GetDlgItem(hDlg,IDC_CHECK_MW), BM_GETCHECK, (WPARAM)0 ,(LPARAM)0) == BST_CHECKED; 
    } 

나는 방법 OOF 경우가 있습니다 만, 어떤 도움이 좋을 것!

int checkState = SendMessage (otherHwnd, BM_GETCHECK, 0, 0); 
SendMessage (otherHwnd, BM_SETCHECK, checkState == BST_CHECKED ? BST_UNCHECKED : BST_CHECKED, 0); 

이 과정은뿐만 아니라 중간 상태, 검사 또는 선택 해제 할 수 있다고 가정하면 핸들 또는 편리한 뭔가가있는 경우

+1

? 왜 라디오 버튼을 사용하지 않았을까요? – jussij

+1

@ jussij, 아마도이 프로그램은 사람들을 트롤하는 것을 의미합니다. : p 나는 이유가 주어져야한다고 동의한다. – chris

+0

하, 그것은 트롤 아니오로 의미가 아니 었어, 난 그냥 GUI가 좀 더 나아 보이게 만들 줄 알았지 만, 그게 그냥 사용자에게 혼란스러워 결국 때문에 내가 뭘 생각했는지 모르겠다. 모두 똑같은데, 당신의 코드는 @Chris라는 속임수를 사용했습니다. 감사! – L337BEAN

답변

2

, 그냥 BM_SETCHECK 보내. 체크 박스는 이와 같이 작동해야하기 때문에 실제로 생각해 보겠습니다. 라디오 버튼은이 동작에 적합한 도구입니다.

또한, 메시지 스위치, 당신이 아마 원하는 :

지구에 라디오 버튼과 같은 체크 박스 작품을 만들려고 노력하는 이유
case WM_COMMAND: 
{ 
    if (HIWORD (wParam) == BN_CLICKED) 
    { 
     switch (LOWORD (wParam)) 
     { 
      case IDC_CHECK_MW: 
       //check this, uncheck that 
       break; 

      case IDC_OTHER_CHECK: 
       //check other, uncheck first 
       break; 

      default: 
       //something went wrong 
     } 
    }  
} 
+0

이것은 내가 찾고있는 것이었다. 감사! – L337BEAN

관련 문제