Я хочу сделать прозрачный диалог. Я фиксирую сообщение OnCtlColor в производном от CDialog классе ... это код:
HBRUSH CMyDialog::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
if(bSetBkTransparent_)
{
pDC->SetBkMode(TRANSPARENT);
hbr = (HBRUSH)GetStockObject(NULL_BRUSH);
}
return hbr;
}
Работает нормально для всех элементов управления, кроме группового блока (CStatic). Все надписи (CStatic) закрашены прозрачным фоном текста, но текст группового блока не является прозрачным.
Я уже гуглил по этому поводу, но не нашел решения. Кто-нибудь знает, как сделать настоящий прозрачный групповой ящик?
Кстати, я работаю в Windows XP. И я не хочу полностью рисовать элемент управления, чтобы избежать необходимости изменять код, если приложение переносится на другую ОС.
Спасибо
1012 * Хавьер *
Примечание: я наконец-то изменил диалоговое окно, так что мне не нужно делать его прозрачным. В любом случае, я добавляю эту информацию, потому что, возможно, кто-то все еще пытается это сделать. Групповой ящик не CStatic, а CButton (я знаю, что это не ново). Я изменил тему Windows XP на Windows classic, а затем фоновый рисунок группы был прозрачным. Плохо то, что в этом случае линия рамки становится видимой под текстом ... так что, если кто-то следует этому подходу, я думаю, возможно, он или она лучше последуют совету Adzm.