Я хочу сделать прозрачный диалог. Я захватить сообщение 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. И я не хочу полностью рисовать элемент управления, чтобы не менять код, если приложение переносится в другую ОС.
Спасибо,
Хавьер
Примечание: В конце концов я изменил диалог, так что мне не нужно, чтобы сделать его прозрачным. Во всяком случае, я добавляю эту информацию, потому что, возможно, кто-то все еще пытается это сделать. Групповой бокс - это не CStatic, а CButton (я знаю, что это не ново). Я изменил тему Windows XP на классическую Windows, а затем групповое backgraund было прозрачным. Плохое то, что в этом случае рамка становится видимой под текстом ... поэтому, если кто-то следит за этим подходом, я думаю, что он лучше будет следовать совету Адзма.
Я просто пробовал это в очень быстром тесте, и текст группового поля прозрачен (в той степени, в которой даже текст группы отображается под текстом). Возможно, ваша проблема не в приведенном выше коде: вы можете попробовать сделать небольшую демонстрационную тестовую программу. – DavidK 2008-11-04 10:12:30