Стоит задача такая: сделать окно(диалог) с пользовательским фоном.
Фон рисуется без проблем.
Вот теперь начинаются приключения, связанные с особыми требваниями:
1. Не должно быть стандартной рамки
2. Окно должно быть resizable пользователем
Для этого делаю следующее:
1. Ресурсу диалога выставленно: Caption=False, Frame=Resizing
Нужное поведение измеения размера обеспечено
2. В связи с тем что Frame=Resizing всё-таки рисует рамку, то я обрабатываю WM_NCPAINT и зарисовываю её нужным рисунком
Всё хорошо, но эта гребаная рамка всё-равно рисуется когда надо и не надо, а именно: собсвтенно при изменения размера(после отпускания), а также при активации и делактивации окна.
Пытаюсь это лечить обработкой сообщений
WM_ACTIVATEAPP, WM_WINDOWPOSCHANGED, WM_WINDOWPOSCHANGING, WM_NCACTIVATE, WM_ACTIVATE, WM_MOUSEACTIVATE, WM_SIZE, WM_MOVE,
вызовом RedrawWindow(hDlg, NULL, NULL, RDW_UPDATENOW);
Это лечит почти всё кроме момента активации и декативации.
Может я что-то пропустил?
PY>Приветствую коллеги
PY>Стоит задача такая: сделать окно(диалог) с пользовательским фоном. PY>Фон рисуется без проблем. PY>Вот теперь начинаются приключения, связанные с особыми требваниями: PY>1. Не должно быть стандартной рамки PY>2. Окно должно быть resizable пользователем PY>Для этого делаю следующее: PY>1. Ресурсу диалога выставленно: Caption=False, Frame=Resizing PY> Нужное поведение измеения размера обеспечено PY>2. В связи с тем что Frame=Resizing всё-таки рисует рамку, то я обрабатываю WM_NCPAINT и зарисовываю её нужным рисунком PY>Всё хорошо, но эта гребаная рамка всё-равно рисуется когда надо и не надо, а именно: собсвтенно при изменения размера(после отпускания), а также при активации и делактивации окна. PY> Пытаюсь это лечить обработкой сообщений PY> WM_ACTIVATEAPP, WM_WINDOWPOSCHANGED, WM_WINDOWPOSCHANGING, WM_NCACTIVATE, WM_ACTIVATE, WM_MOUSEACTIVATE, WM_SIZE, WM_MOVE, PY>вызовом RedrawWindow(hDlg, NULL, NULL, RDW_UPDATENOW); PY>Это лечит почти всё кроме момента активации и декативации. PY>Может я что-то пропустил?
Как вариант отключить вообще NC-область окна, обрабатывать изменение размера и перетаскивание ручками.
Здравствуйте, PanychY, Вы писали:
PY>Приветствую коллеги
PY>Стоит задача такая: сделать окно(диалог) с пользовательским фоном. PY>Фон рисуется без проблем. PY>Вот теперь начинаются приключения, связанные с особыми требваниями:
Как это сделано в Sciter:
Окну выставляется WS_POPUP — все остальные флаги убираем.
В данном случае (полупрозрачное окно) выставляется WS_EX_LAYERED
Custom обработчик WM_NCHITTEST на краях окна возвращает HTBOTTOMLEFT, HTBOTTOMRIGHT, и пр. HTCAPTION в нужных местах (чтобы окно можно было таскать).
Здравствуйте, c-smile, Вы писали:
CS>Окну выставляется WS_POPUP — все остальные флаги убираем. CS>В данном случае (полупрозрачное окно) выставляется WS_EX_LAYERED
Спасибо добрый человек, ты меня прямо спас. Я неделю безуспешного играюсь с этой задачей...