Я работаю над приложением win32 DialogBox. Это использует DialogBox() для создания диалогового окна и имеет процедуру диалогового окна, которая выполняет все обычные вещи.win32 Приложение DialogBox: как отобразить текст из callback на DialogBox?
В диалоговом окне есть некоторые элементы управления статическим текстом на нем, и обычно я показываю текст в них через SendDlgItemMessage() из процедуры диалогового окна.
Однако в какой-то момент DialogBox инициирует длительную операцию. Эта операция имеет обратный вызов с рядом сообщений о статусе. У меня возникли некоторые проблемы, показывая эти сообщения в диалоговом окне, по двум причинам:
Функция обратного вызова не знает, что диалоговое окно HWND это, потому что он вызывается из кода, который осуществляет длительная работа. Я предполагаю, что могу определить переменную HWND области файла и скопировать диалоговое окно HWND в нее из процедуры диалогового окна непосредственно перед началом длительной операции. Таким образом, функция обратного вызова может иметь доступ к диалоговому окну HWND. Но это кажется ужасно kludgy: есть ли более элегантный способ?
Процедура диалогового окна блокируется во время длительной операции. Это не имеет значения, потому что это встроенная система. Но Windows даже покажет текст в диалоговом окне, если я выдаю SendDlgItemMessage(), в то время как процедура диалогового окна заблокирована?
редактировать Я сделал некоторые исследования с использованием SendDlgItemMessage(), чтобы отправить WM_SETTEXT на статический контроль текста на диалоге. Текст сразу отображается, даже если процедура диалогового окна заблокирована.
Все хорошие вещи. Я иду с непрозрачным маршрутом указателя и, кажется, хорошо работаю. Точка, занятая рабочей нитью; Я бы это сделал, если бы это было «реальное» приложение, а не встроенное, где не было бы мыши или клавиатуры. –