단추를 클릭하면 WM_COMMAND 메시지가 부모에게 보내지지만이 메시지를 보내는 메시지는 무엇인지 알 수 있습니까? 단추의 기본 WndProc을 재정의하고 단추가 WM_COMMAND 메시지를받지 못하므로 어떤 메시지가 단추로 WM_COMMAND 메시지를 보내야 해당 기능을 복제 할 수 있는지 알아야합니다.어떤 메시지가 단추로 WM_COMMAND 메시지를 보내 게합니까?
답변
실제로는 WM_LBUTTONDOWN, WM_MOUSELEAVE 및 기타 몇 가지 기능이 조합 된 것입니다. 예를 들어 WM_COMMAND는 마우스로 버튼을 누른 경우에만 발생하고 WM_LBUTTONUP이 발생하면 버튼에 남아 있습니다. 공간에 관해서는, 등, 난 그냥 VK_ENTER 메시지 및 물건을 처리 믿습니다.
나는 그것이 WM_LBUTTONUP이지만, Spy 프로그램을 사용하여 확실히 알아 낸다.
어떤 때를에 대해 할 수있는 버튼 래퍼 객체에 대한 포인터 이전 예제의 some_info이
::SetWindowLongPtr(button_handle, GWL_USERDATA, reinterpret_cast<LONG_PTR>(some_info));
같은 정보를 설정해야합니다
::GetWindowLongPtr(HWND(lParam), GWL_USERDATA);
호출하면 버튼에 대한 정보를 추출 할 수 있습니다 스페이스 키로 클릭하십시오. 또는 Enter 키? 아니면 가속기 키로? –
WM_LBUTTONDOWN
메시지가 WM_COMMAND
메시지로 변환되어 상위 컨트롤로 보내 지므로 WM_COMMAND
메시지를 무시할 수 없습니다. 백그라운드에서 수행되는 메커니즘입니다.
vk_enter
,
vk_tab
같은 가상 키 코드에 의해 제어 할 수
WM_COMMAND 메시지가 항상 컨트롤의 부모에 의해 수신 입력합니다. 프로그래밍 방식으로 버튼을 클릭하려면 다음을 수행하십시오.
::SendMessage(button_handle, BM_CLICK, 0, 0);
WM_COMMAND의 LPARAM은 button_handle을 보유합니다. 그래서 당신은 당신이
- 1. 메시지를 보내 마우스를 클릭하십시오.
- 2. Twitter에 메시지를 보내시면 오류 메시지가 생성됩니다.
- 3. 이메일을 보내 주세요.
- 4. C#에서 메시지를 보내 창 스타일을 변경하는 방법은 무엇입니까?
- 5. 의사 단추로 JLabels 사용
- 6. "Windows + D"를 누를 때 어떤 메시지가 Windows에서 전송됩니까
- 7. SAML 주장 - 어떤 메시지가 진짜처럼 보이나요?
- 8. 방법 브라우저 새로 고침 확인 메시지를 해제하는 [취소 다시 보내] 자바 스크립트에서
- 9. Bourne의 스크립트 : 성공 메시지가 아닌 오류 메시지를 리디렉션
- 10. 보기를 단추로 표시합니다.
- 11. 그림을 단추로 사용 하시겠습니까?
- 12. UITableViewCell 단추로 타이머 설정하기
- 13. 강제 단추로 레이블을 업데이트하십시오.
- 14. 제출 단추로 앵커
- 15. MQ 메시지가 사라졌습니다.
- 16. 이메일을 보내 주신 이메일을
- 17. SOAP 메시지가 아닌 이진 방식으로 WCF 메시지를 serialize하십시오.
- 18. 문제를 찾으려면이 스크립트에 어떤 오류 메시지를 넣어야합니까?
- 19. 어떤 스칼라 주석이 컴파일러의 메시지를 수정합니까?
- 20. 어떤 물건이 내 물건에 "석방"메시지를 보냈습니까?
- 21. MFMailComposeViewController가 어떤 이메일 주소로 iPhone에서 메시지를 보냅니다
- 22. PHP가 MIME 이메일을 보내 ... 더 이상 작동하지 않습니다.
- 23. Oracle Forms - 나머지 메시지가 표시되거나 메시지가 표시되지 않습니다.
- 24. jQuery와 PHP 다차원 배열을 보내
- 25. 에 상태 메시지가 표시됩니다.
- 26. 오버레이 된 단추로 UIImageView 애니메이션하기
- 27. 탭 막대의 단추로 새보기 열기
- 28. UIButton 콘센트를 단추로 어떻게 드래그하나요?
- 29. 메시지가 파이썬으로 전달됩니다.
- 30. django 님이 이메일을 보내 셨습니다.
명시 적으로 트랩하지 않으려는 메시지의 단추에 대해 이전 WndProc을 호출 할 수 있습니다. (메모리에서, 나는 그것을 GetWindowLongPtr (hWnd, GWL_WNDPROC)라고 생각한다.) 당신이하려고하는 것은 무엇이든 할 수있게 해주는 반면, 새로운 버튼은 정상적으로'WM_COMMAND' 메시지를 보낸다. 해야 할 것. 비록 이것이 당신의 상황에 어떤 좋은 점인지 정말로 알 수는 없지만 ... –
@ 브론 아니, 나는 버튼이 (버튼의 규칙에 따라) 진정으로 "클릭 된"것인지 아닌지를 말할 수 있어야한다. 원래 WndProc, 그래서 내 물건을 할 수 있습니다. 부모 윈도우에서 WM_COMMAND를 트래핑하는 것은 내가 필요한 것이 아닙니다. –