작업 스레드가 주 스레드에서 메서드를 호출해야하는 응용 프로그램이 있습니다. win32api.PostThreadMessage (메시지 WM_USER + X 포함)를 통해 사용자 지정 메시지를 보내려하고이 메시지를 받으면 일부 기능이 주 스레드에서 실행되어야합니다. 내가 뭘 찾고, 해당 WM_USER_X 메시지에 메서드를 등록하는 것입니다?MultiThreading : 윈도우의 맞춤 메시지에 해당하는 메인 스레드에 메소드를 등록 할 수 있습니까?
1
A
답변
-1
RegisterWindowMessage 함수를 보면, 정확히 무엇을하고 있는지 (다른 것과 충돌해서는 안되는 메시지 번호를 제공합니다). 한 가지 단점은 메시지 번호가 상수가 아니지만 프로그램 실행마다 달라 지므로 메시지 루프가 다소 복잡해 지지만 이런 종류의 일에는 가치가 있습니다.
+0
질문은 메시지에 응답하는 코드를 연결하는 방법입니다. 메시지 ID를 얻는 방법이 아닙니다. –
관련 문제
- 1. 메인 윈도우의 언로드시 메인 윈도우의 iframe에서 열린 윈도우를 닫는 방법
- 2. 헤드리스 JAR이 메인 스레드에 종료 훅을 추가 할 수 있습니까?
- 3. 메인 윈도우의 도크 분리기에 핸들이 있습니까?
- 4. 메인 스레드에 어떻게 응답합니까?
- 5. 윈도우의 파이프 선택에 해당하는 것
- 6. JSVC가 네이티브 메소드를 등록 할 수 없음
- 7. 메인 윈도우의 rootViewController를 어떻게 바꿔야합니까?
- 8. 어떻게 파이썬에서 클래스 변수에 메소드를 등록 할 수 있습니까?
- 9. CoreBluetooth는 메인 대기열/메인 스레드에 위임합니까?
- 10. Web2Py의 내장 "모델"에 맞춤 메소드를 추가 할 수 있습니까?
- 11. OSes간에 맞춤 프로토콜이나 MIME 연관을 쉽게 등록 할 수 있습니까?
- 12. 콜백 함수가있는 스레드에 이벤트 등록
- 13. 크론 메시지에 이미지를 표시 할 수 있습니까?
- 14. 윈도우의 바탕 화면과 같은 메인 윈도우 만들기
- 15. Ehcache & MultiThreading
- 16. Ruby on Rails - 컨트롤러를 호출 할 수 있습니까? 윈도우의 일괄 처리 루틴에서 메소드를 호출 할 수 있습니까?
- 17. Mozilla Thunderbird가 새 메시지와 메시지에 응답 할 수 있습니까?
- 18. 메인 윈도우의 텍스트 상자에서 UserControl을 텍스트 상자
- 19. .net multithreading?
- 20. 메인 윈도우의 그리드에서 사용자 컨트롤 열기 - WPF
- 21. 메인 스레드가 스레드 결합 메소드를 종료 할 때
- 22. 메인 스레드의 스레드에서 메소드를 호출하려면 어떻게해야합니까?
- 23. 파이썬에서 메인 Tkinter 윈도우의 크기를 변경하는 방법은?
- 24. 메인 페이지의 이미지 만 메인 페이지로 표시 할 수 있습니까?
- 25. UIView setNeedsDisplay 메인 스레드에 있지 않습니까?
- 26. ActionPerformed에서 메소드를 호출하고 메인 스레드에서 메소드를 호출합니다.
- 27. 메인 CSS의 세로 맞춤
- 28. 메소드를 메인 스레드로 표시 하시겠습니까?
- 29. 이클립스가 메인 메소드를 찾지 못한다
- 30. UIGraphicsBeginImageContextWithOptions 및 Multithreading
그건 어떻게 작동하지 않습니다. 메소드에 메시지를 등록하지 않습니다. 스레드에 메시지를 게시하는 경우 주 응용 프로그램의 메시지 루프 (및 실행되는 모든 모달 메시지 루프)를 수정해야합니다. 주 스레드에 직접 게시하는 것은 매우 나쁜 생각입니다. 창에 게시하는 것이 더 좋습니다. 그런 다음 해당 창의 창 프로 시저에서 메시지를 처리해야합니다. –
[ "PostThreadMessage에 게시 된 메시지가 사라지는 이유는 무엇입니까?"] (https://blogs.msdn.microsoft.com/oldnewthing/20090930-00/?p=16553)를 참조하십시오. 관용적 인 방법은 주 스레드에서 작업자 스레드로 창 핸들을 전달하는 것입니다. 그런 다음 작업자 스레드는이 창 핸들을 지정하는 일반'PostMessage()를 수행합니다. – zett42
@DavidHeffernan, 맞춤 메시지가있는 창을 만들고 https://www.programcreek.com/python/example/53218/win32con.WM_USER를 통해 메시지를 처리하는 방법을 보았습니다. 여기에서 메시지 맵을 만듭니다 (참조 예 2) 하지만 창을 만들지 않으려면 어떻게해야합니까? – Shady23