2013-06-18 11 views
10

저는 약간 혼란 스럽습니다 : 어떤 식 으로든 "관련성이 높은"또는 전혀 다른 것들을위한 WM_CLOSE::CloseWindow이 있습니까?CloseWindow와 WM_CLOSE의 관계는 무엇입니까

Closing Windows에 대한 문서에는 API 기능 CloseWindow이 전혀 언급되어 있지 않습니다. CloseWindow은 "MinimizeWindow"라고 불리우며 무엇이 누락 되었습니까?

+0

"대화 상수 DS_RECURSE의 값은 무엇입니까?" (http://stackoverflow.com/questions/15024372/what-is-the-value-of-a-dialog-constant-ds-recurse) - 내 주제가 [닫혔습니다. "CloseWindow와 WM_CLOSE의 관계는 무엇입니까?"또한 닫아야합니다 :-) – kero

+0

@kero : 아무것도 수행하지 않는 것으로 증명되지 않은 상수의 값을 물었습니다. 이것은 실용적인 프로그래밍 질문이 아닙니다. 이 질문에 반대로. 그래서 네가 닫혀서 이건 네가 아니야. – IInspectable

답변

5

CloseWindowWM_CLOSE은 완전히 관련이 없습니다. CloseWindow 함수의 이름이 잘못되었습니다. 그것의 역함수, OpenWindow은 마찬가지로 창을 복원한다는 점에서 잘못 명명되었습니다.

나는이 이름을 의심 아마 내가 다시, 우리가 지금 을 최소화 전화을 복원하는 것이 있었다 추측하고있어 1 또는 2 Windows 버전에, 참으로 아주 먼 길을 거슬러 올라, 가까운 불러 열기.

일반적으로 창을 최소화하거나 복원하는 방법은 을 SW_MINIMIZE 또는 SW_RESTORE으로 전달하는 것입니다.

CloseWindowOpenWindow을 모두 잊어 버릴 것을 제안합니다.

6

CloseWindow은 일반적으로 잘 못된 winapi 기능입니다. 실제로 창을 닫지는 않으며 최소화합니다. 당신이 의미 한 바는 DestroyWindow()입니다.

WM_CLOSE 일반적 Alt 키 +F4를 누르거나 윈도우의 닫기 버튼을 클릭하면, 사용자에 대한 응답으로, 윈도우의 기본 절차에 의해 생성 된 것 메시지이다. 기본 메시지는 WM_SYSCOMMAND, SC_CLOSE입니다. Window에서 Close 메뉴 항목처럼 코드에서 생성 할 수도 있습니다.

WM_CLOSE을 윈도우 프로 시저 또는 MFC 메시지 맵에서들을 수 있습니다. 사용자는 창을 닫을 것으로 예상합니다. 따라서 보통 DestroyWindow()으로 전화하십시오. 예를 들어 메시지 상자를 표시하고 데이터 저장 여부를 사용자에게 묻습니다. 그리고 그가 No을 클릭하면 DestroyWindow()으로 전화하지 않습니다.