изменить цвет фона в родительском окне

Я очень новичок в программировании на win32api. У меня есть 3 вопроса.

Как изменить цвет фона в родительском окне. я сделал это следующим образом, но это не работает

wClass.hbrBackground=(HBRUSH)(RGB(255,255,255));

Второй вопрос, я использую, чтобы добавить текст в окне следующим образом. текст выделен жирным шрифтом и цветом фона. Я хочу, чтобы текст был обычным и без фона.

PAINTSTRUCT ps;
HDC hDC;
char szBuffer[]="Hello, World!";
hDC=BeginPaint(hWnd,&ps);
TextOut(hDC,10,10,szBuffer,strlen(szBuffer));

Третий вопрос — как добавить групповые блоки в родительское окно. Я искал это в Интернете, но это было описано, как добавить групповые блоки в диалоговых окнах, используя ресурсы.
Пожалуйста, помогите мне с этим …

0

Решение

  1. > wClass.hbrBackground = (HBRUSH) (RGB (255,255,255));

Я предполагаю, что структура класса требует дескриптора кисти, а не самого значения цвета (но я не уверен). Что-то вроде этого:

wClass.hbrBackground=(HBRUSH)(CreateSolidBrush(RGB(255,255,255)));
  1. Чтобы сделать фон текста прозрачным, используйте специальную функцию WinAPI, SetBkMode(TRANSPARENT); (Oof, потратьте некоторое время, чтобы запомнить его имя :)).

  2. В большинстве задач будет гораздо лучше создать ресурс диалога и использовать его как обычное окно (рисовать что-то в нем, помещать простые окна, в котором вы рисуете и т. Д.), Чем брать обычное окно и пытаться добавить в него элементы управления диалогом. Это стало обычной практикой со времен WinForms, а затем и WPF — каждое окно в них — это «форма», в которую можно добавлять элементы управления, рисовать в ней и так далее.

0

Другие решения

Я пытаюсь вспомнить, вставил ли Microsoft код для очистки клиентской области. Я знаю, что, как минимум, вы можете получить клиентский прямоугольник, а затем использовать его для создания команды drawRect () для всей клиентской области. Вам также может понадобиться перехватить команду, чтобы стереть фон

0

По вопросам рекламы [email protected]