Я написал визу. Studio диалоговое приложение для удаленного управления части оборудования, которое включает небольшой ЖК-графический дисплей, который нам нужно просмотреть из диалога. Редактор диалога V.Studio, похоже, не представляет собой законченное решение. Будучи программистом Windows по необходимости, а не с призывом, я сделал следующее:Графика GDI в диалоговом окне
- Добавлен элемент управления редактирования в диалог.
- При поступлении обновления LCD изображение, создать CClientDC на поле редактирования
- вызовов GDI функции для установки значения пикселей
Это кажется bletcherous, но делает работу, когда приходит образ. Очевидно, не перерисовывает изображение при перерисовании диалога. Код сохраняет данные изображения для перерисовки, но нет радости, пытаясь найти место для вызова функции перерисовки изображения, когда диалог перерисовывается.
- Добавление вызова redraw в качестве последнего оператора в диалоговом окне Функция OnPaint() создает изображение, но сразу же уничтожается при возврате OnPaint().
- Тот же результат при отправке пользовательского WM_DRAWLCD_MESSAGE в OnPaint() - изображение создается, но уничтожается.
- Рамка не вызывает вызов EndPaint(), поэтому не может перерисовать изображение.
Два вопроса:
1. Существует ли вообще-акцепторный способ достижения этой цели?
2. Если нет, то где код может вызвать вызов функции перерисовки при перерисовании диалога?
@zeromus: Мой «тостер» подключен к диалоговому окну и общается довольно хорошо. Образцом для ЖК-дисплея является содержимое панели ЖК-дисплея, установленной на аппарате для использования пользователем. Когда я диагностирую дистанционно, это будет проще сделать, щелкнув элементы управления диалогового окна под изображением, чтобы выполнить операции управления/состояния и увидеть ответ, а не дублировать все функции машины другими способами. Вещи работают так, как ожидалось, пока диалог остается наверху. Когда диалог не остается сверху, вернув его сверху, он не восстанавливает изображение. Данные и код, создающие растровое изображение, не являются частью элемента управления CEdit. Таким образом, вопросы: (1) Есть ли одобренный мастером способ отображения и восстановления измененного растрового изображения в диалоговом приложении (в отличие от отображения статического изображения) и (2) Если нет, есть ли место в диалоговом коде для соединения в вызове моей функции рисования растрового изображения во время перерисовки диалога? Благодаря!
Решение простое: Добавить 'объект CBitmap' в качестве члена в диалоговом классе. Всякий раз, когда данные поступают, обновляйте данные растрового изображения и вызывайте 'InvalidateRect' для запуска обновления. В обработчике «OnPaint» просто визуализируйте растровое изображение. Если вам нужен заполнитель в ресурсе диалога, используйте невидимый статический элемент управления. Поскольку вы все одержимы использованием мастера MFC, вам следует подумать о двух шагах назад: «1» Изучите Windows API и «2». Узнайте о макросах препроцессора MFC в глубину. Если вы пропустите любой шаг, MFC значительно затруднит программирование Windows. – IInspectable