Создается окно через CreateWindowEx. Аналогично на нем создаются дочерние окна (контролы). Проблема в том что у главного окна и контролов (static'а например) различается цвет бэкграунда. Если использовать манифест - все нормально. Интересно узнать решение этой проблемы без использования манифеста. Можно ли обойтись без сабклассинга дочерних окон или установки стиля owner draw у контролов? Думаю должен быть выход проще...
WM_CTLCOLOR<name_of_control> name_of_control - STATIC, EDIT, etc wParam - handle to the device context for the control lParam - handle to the control If an application processes this message, the return value is a handle to a brush that the system uses to paint the background of the control.
Доброго времени суток! Я тут тоже занялся бэкграундом контролов. Проверил методику предложеную zhindos работает, но с какими-то глюками. Код (Text): .elseif eax==WM_CTLCOLORLISTBOX invoke SetBkMode,[wParam],TRANSPARENT mov eax, [hBrushList] ret Бовавляю бэкграунд к ListBox. Пока он пустой, то бэкграунд правильный, но если в него добавить пару строк, то на добавленных строка проступает бэкграунд родительского окна. Это так должно быть? У меня Win2kSP4. И еще один вопросик. Как можно определить позицию контрола (любого) относительно клиентской области. Т.е. учесть ширину бордюра и меню? В какую API стучать?
S_Alex но если в него добавить пару строк, то на добавленных строка проступает бэкграунд родительского окна Все вопросы к написателем кода WinProc listbox-а Как можно определить позицию контрола (любого) относительно клиентской области GetWindowInfo
Делаю так для static'а: Код (Text): case WM_CTLCOLORSTATIC: SetBkMode((HDC) wParam, TRANSPARENT); return GetSysColorBrush(COLOR_WINDOW); break; Цвет бэкграунда статика теперь другой, но все равно не такой же, как у основного окна
В MASM32 небыло структуры WINDOWINFO, да и в Win32.hlp у меня тоже нет описания. Потому и не нашел, пришлось лезть в MSDN. Там есть zhindos Спасибо, как раз то, что доктор прописал.
Да, действительно, мой косяк, забыл сделать +1 к COLOR_WINDOW в WNDCLASSEX.hbrBackground. Теперь все норм, спасибо за помощь.