내 프로그램에 여러 스레드가 있습니다. 메시지 상자를 사용하여 사용자에게 정보를 표시하고 있습니다. 메시지 상자가 여전히 화면에 표시되고 사용자가 볼 수있는 동안 다른 스레드 업데이트/메시지 상자 표시 텍스트를 변경할 수있는 여하튼 (또는 메시지 상자의 대안) 있습니까?win32 : MessageBox 텍스트를 변경 하시겠습니까?
0
A
답변
1
GetCurrentThreadId() 및 SetWindowsHookEx()를 통해 스레드 별 후크를 사용하면 MessageBox()가 내부적으로받는 메시지를 연결하고 대화 상자의 기본 창 핸들에 액세스 할 수 있으므로 모든 대화 상자의 자식 컨트롤 그런 다음 필요에 따라 대화 상자와 컨트롤을 사용자 정의 할 수 있습니다. 이 기술은 일반적으로 MessageBoxTimeout()이 도입되기 전에 자체 닫기 대화 상자를 구현하고 버튼의 텍스트를 사용자 정의하는 데 사용됩니다.
5
표준 Win32 메시지 상자를 사용하는 경우 상자가 이미 표시되면 텍스트를 변경하는 방법이 없다고 생각합니다 (모달 메시지 펌프 입력).
다른 스레드의 메시지/업데이트를 수신하는 자신 만의 창을 만드는 것이 좋습니다. 당신이 통제 할 수있는 그런 식으로.
0
직접적인 방법이 없다고 생각합니다. 아마도 창 핸들을 얻으려고 할 수는 있지만 너무 복잡합니다. 가장 좋은 방법은 자신 만의 대화 상자를 만들어서 완벽하게 제어 할 수 있도록하는 것입니다.
관련 문제
- 1. MessageBox 버튼 - 언어를 설정 하시겠습니까?
- 2. MessageBox
- 3. 프로그래밍 방식으로 NSTextField의 텍스트를 변경 하시겠습니까?
- 4. 레이블 텍스트를 다른 파일의 값으로 변경 하시겠습니까?
- 5. uitableview에서 특정 행의 텍스트를 변경 하시겠습니까?
- 6. Win32 : 프로그램 아이콘 변경
- 7. Win32 창 스타일 변경
- 8. 타임 아웃이있는 MessageBox 또는 다른 스레드에서 MessageBox 닫기
- 9. Winforms의 모양 MessageBox
- 10. Win32 : 폴더 수정을 방지 하시겠습니까?
- 11. C#의 다국어 MessageBox
- 12. RetryCancel MessageBox
- 13. C++ win32 트랙볼 배경색 변경
- 14. PHP/Javascript를 사용하여 Disqus 코멘트에 표시된 텍스트를 변경 하시겠습니까?
- 15. 잠금 화면 백그라운드 오디오 컨트롤 텍스트를 변경 하시겠습니까?
- 16. Win32 :: OLE :: Variant를 perl 변수로 변환 하시겠습니까?
- 17. CSS에서 텍스트를 선택 하시겠습니까?
- 18. 데이터베이스의 텍스트를 수정 하시겠습니까?
- 19. JLabel에서 텍스트를 선택 하시겠습니까?
- 20. 텍스트를 BLOB에 저장 하시겠습니까?
- 21. 셀 텍스트를 편집 하시겠습니까?
- 22. 텍스트를 위로 이동 하시겠습니까?
- 23. 텍스트를 템플릿에 표시 하시겠습니까?
- 24. Gui의 Win32 API
- 25. MessageBox in C#
- 26. Calibur.Micro의 Exception/MessageBox
- 27. statbox with messagebox java
- 28. C# MessageBox 오류 메시지
- 29. 간단한 ASP.Net MessageBox?
- 30. Visual C++ MessageBox
정답입니다. 기본 메시지 상자는이를 위해 설계되지 않았습니다. 이를 지원하기 위해 자신 만의 대화 상자와 API를 만들어야합니다. 희소식은 이것이 너무 어렵지 않을 것이라는 점입니다. PostThreadMessage()에 Windows 메시지를 사용하면 여기에 친구가됩니다. – Foredecker
예, MessageBox() 텍스트를 동적으로 변경할 수 있습니다. MesageBox()를 호출하기 전에 SetWindowsHookEx()를 사용하여 CBT 후크를 설치하십시오. 후크는 대화 상자의 HWND를 제공하며 대화 상자의 모든 하위 창에 액세스하여 원하는대로 수행 할 수 있습니다. –
@Remy - coll trick =) –