2009-04-30 5 views
4

전화 : 버튼 "예"와 "아니오"표시와AfxMessageBox Yes/No (MB_YESNO) "닫기"버튼을 활성화하는 방법은 무엇입니까? (오른쪽 위 모서리에 "X")

AfxMessageBox(strMsg, MB_YESNO); 

MessageBox에 있습니다. 그러나 오른쪽 상단 모서리에있는 "X"(닫기 버튼)는 사용할 수 없으며 ESC를 눌러도 아무 효과가 없습니다.

올바른 결과는 IDCANCEL이 아닌 IDYES 및 IDNO 뿐이기 때문입니다.

이 동작을 사용하도록 설정하는 빠른 방법이 있습니까? 내가 피하고 싶습니다 :

  • 이 사용자 지정 대화 상자 만들기.
  • 예/아니오/취소 버튼이 있습니다.

파일을 삭제할 때 확인을 요청하는 대화 상자에는 "예"와 "아니오"만 있으며 닫기 버튼 또는 ESC를 사용하여 취소 할 수도 있습니다. 나는 그것이 사용자 정의 대화 상자라고 추측합니다.

답변

4

AfxMessageBox()는 내부적으로 MessageBox()을 호출합니다. 그래서, 아니오, 버튼을 추가하는 MB_YESNOCANCEL을 사용하지 않고 여기서 원하는 동작을 얻을 수 없습니다 ...

1

한스 디트리히의 무료 XMessageBox은 표준 메시지 상자의 기능이 풍부한 확장입니다 . 당신은 요 체크 아웃 할 수 있습니다.

또한 취소 버튼을 원하지 않는 이유는 아직 이해가되지 않지만 동일한 기능을하는 UI 요소를 원하지만 분명하지는 않습니다.

편집 : 귀하의 코멘트 응답 : '아니오'나는 생각한다 '취소'와 교환 할 경우

을 '없음'나쁜 라벨 선택입니다. 예 : DeleteFolder() 함수에서 묻는 질문 :

"하위 폴더도 비워야합니까?" 분명히 no와 Cancel/Escape는 같은 의미를 가지고 있지 않습니다.

OTOH, "파일을 삭제 하시겠습니까?" 버튼이 예/아니오 여야합니다. 하지만 나는 OK/Cancel을 선호한다. 사용자의 확인을 요구하기 때문에 사용자가 더 많은 정보를 요구하지 않기 때문입니다. 이 경우 Esc 키/적십자가 작동하도록하는 것이 확실히 도움이됩니다.

+1

"X를 삭제 하시겠습니까?"라는 질문은 "취소"버튼이 "아니오"버튼을 클릭하는 것과 동일하기 때문에 중복됩니다. ESC는 키보드를 사용하기를 좋아하는 사용자를위한 것입니다. 닫기 버튼 "X"를 활성화하면 "아니오"라고 대답 할 수 있기 때문에 동일한 대화 상자의 다른 위치에서 사용할 수 있습니다. "아니오"와 "취소"버튼이 서로 옆에 있고 그것들이 똑같이하면, 둘 다 가지고있는 것이 의미가 없습니다. – rec

+1

문제는 '아니오'이며 '취소'는 다른 답변입니다. 좋아, 어떤 경우에는 유사 할 수도 있지만 보증 할 수는 없습니다. "빈 폴더"기능에 대한 가짜 예제 : "하위 폴더도 비워야합니까?", 예/아니오. 취소는 아무 것도 삭제하지 않습니다. 예 및 아니오는 일부 내용을 삭제하지 않습니다. –

관련 문제