Моя программа имеет несколько потоков. Я использую Messagebox для отображения информации пользователю. Есть ли в любом случае (или альтернатива ящику сообщений), что у меня может быть другой поток, обновляющий/изменяющий текст сообщения в окне сообщения, пока окно сообщения все еще отображается на экране и видимо пользователем?win32: изменить текст MessageBox?
ответ
Используя привязки к потоку через GetCurrentThreadId() и SetWindowsHookEx(), вы можете подключать сообщения, которые MessageBox() получает изнутри, а также получать доступ к дескриптору главного окна диалогового окна, который затем получает доступ ко всем дочерние элементы управления диалогового окна. Затем вы можете настроить диалог и его контроль по мере необходимости. Этот метод обычно используется для реализации самозакрывающихся диалогов (до введения MessageBoxTimeout()), настраивать текст кнопок и т. Д.
Если вы используете стандартное окно сообщений Win32, я не верю, что есть какой-либо способ изменить текст, как только ящик уже показан (вы вводите насос сообщений модального сообщения).
Я бы предложил вам создать собственное окно, которое будет прослушивать сообщения/обновления из ваших других потоков. Таким образом, вы контролируете ситуацию.
Я не верю, что есть прямой способ сделать это, вы, вероятно, можете попытаться получить дескриптор окна, но это слишком грязно. Лучше всего создать собственное диалоговое окно, чтобы у вас был полный контроль над ним.
- 1. Win32 MessageBox отключает текст
- 2. Как изменить содержание MessageBox текст
- 3. win32 изменить текст insideTextOut
- 4. Win32 MessageBox не отображается
- 5. Как показать Win32 MessageBox?
- 6. Полужирный текст в MessageBox
- 7. отображает содержимое регистра в MessageBox win32 (сборка)
- 8. Как изменить местоположение MessageBox?
- 9. .net Пользовательский текст MessageBox подсвечивается
- 10. Как изменить фоновое изображение MessageBox
- 11. Изменить язык для текста кнопки MessageBox
- 12. Win32 Изменить управление смешанным футляром
- 13. Как я могу изменить текст в окне win32?
- 14. изменить объем win32 C++
- 15. Как реализовать эквивалент функции Win32 MessageBox в PHP/JavaScript?
- 16. Пользовательский текст сообщения WPF MessageBox пуст
- 17. Как отобразить текст TextBox внутри MessageBox?
- 18. MessageBox обрезает текст на \ 0 символ
- 19. Добавить кнопку, чтобы скопировать текст в MessageBox
- 20. Выделите текст в сообщении с SWT MessageBox
- 21. Как печатать текст из ComboBox в MessageBox
- 22. win32 Просмотреть список Сокращающий текст
- 23. Прозрачное окно и текст win32
- 24. Как изменить UNIQUE KEY CONSTRAINT MessageBox
- 25. MessageBox
- 26. MessageBox
- 27. Кнопки MessageBox - заданный язык?
- 28. MessageBox не разрешает MessageBoxW?
- 29. изменить цвет конкретной метки win32
- 30. Изменить стиль кнопки «на лету» в Win32
Это правильный ответ. Классический блок сообщений не предназначен для этого. Для этого вам нужно будет создать собственное диалоговое окно и API. Хорошей новостью является то, что это будет не слишком сложно. Просто используйте сообщения Windows для PostThreadMessage() - ваш друг здесь. – Foredecker
Да, вы можете изменить текст MessageBox() динамически. Используйте SetWindowsHookEx(), чтобы установить CBT-крючок до вызова MesageBox(). Крючок предоставит вам HWND диалога, который затем можно использовать для доступа ко всем дочерним окнам диалогового окна и делать все, что вы хотите. –
@Remy - coll trick =) –