Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
| |
[Win32] уточняю MFC 02.10.08 21:35 Число просмотров: 2808
Автор: + <Mikhail> Статус: Elderman
|
Использую MFC, проблема следующая:
есть staitc control, checkboх и другие контролы на диалоге, как сделать transparent background у етих контролов.
У меня есть диалог которой закрыт битмапом, как background, поверху лежат контролы у которых background должен быть прозрачный.
Рекомендуют следующее:
Имплементировать WM_CTLCOLOR handler в диалоге и возвражать brush которая будет исползоваться дла прорисовки background. Brush в моём случае ето bitmap area под контролом, что я и делаю, но ни фига не получается.
Максимум чего смог добится ето прорисовки для static control, но для других (например checkboх) не работает :(.
Ето же типичная задача, наверняка кто-то уже делал или использовал чей-то код.
Я в GUI совсем не очень, скинте код у кого есть.
Заранее благодарю.
|
<programming>
|
[Win32] прозрачный background у контролов на диалоге 02.10.08 04:31
Автор: + <Mikhail> Статус: Elderman
|
как сделать прозрачный background у контролов на диалоге?
пробовал имлементировать WM_CTLCOLOR не помогает для checkbox, если имлементировать
WM_CTLCOLORSTATIC, тогда repaint ne работает :(
заране спасибо
|
|
[Win32] решение 03.10.08 01:39
Автор: + <Mikhail> Статус: Elderman
|
пришлось слепить из многих кодов,
причём каждый отдельно взятый код не работал или работал нетак, о-о-х!
для тех кому интересно вот код:
BOOL CUI_testDlg::OnInitDialog()
{
CDialog::OnInitDialog();
m_BgBitmap.LoadBitmap(IDC_NZ_WELCOME);
m_BgBrush.CreatePatternBrush(&m_BgBitmap);
}
HBRUSH CUI_testDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
if((nCtlColor != CTLCOLOR_STATIC))
return hbr;
//возвращаем нашу brush только для static and checkbox controls !!
CPoint pt(0,0);
if(this != pWnd)
{
CRect rc;
pWnd->GetWindowRect(&rc);
ScreenToClient(&rc);
CRect rcBg;
GetDlgItem(IDC_NZ_WELCOME)->GetWindowRect(&rcBg);
ScreenToClient(&rcBg);
pt.x = -rc.left;
pt.y = -(rc.top - rcBg.top);//вычитаем title image
}
if((HBRUSH)m_BgBrush != NULL)
m_BgBrush.UnrealizeObject();
pDC->SetBrushOrg(pt);
pDC->SetBkMode(TRANSPARENT);
return (HBRUSH)m_BgBrush;
}
---
|
|
[Win32] Уточнил бы язык что ли... MSDN > 02.10.08 21:00
Автор: kstati <Евгений Борисов> Статус: Elderman
|
Transparent Background
|
| |
[Win32] уточняю MFC 02.10.08 21:35
Автор: + <Mikhail> Статус: Elderman
|
Использую MFC, проблема следующая:
есть staitc control, checkboх и другие контролы на диалоге, как сделать transparent background у етих контролов.
У меня есть диалог которой закрыт битмапом, как background, поверху лежат контролы у которых background должен быть прозрачный.
Рекомендуют следующее:
Имплементировать WM_CTLCOLOR handler в диалоге и возвражать brush которая будет исползоваться дла прорисовки background. Brush в моём случае ето bitmap area под контролом, что я и делаю, но ни фига не получается.
Максимум чего смог добится ето прорисовки для static control, но для других (например checkboх) не работает :(.
Ето же типичная задача, наверняка кто-то уже делал или использовал чей-то код.
Я в GUI совсем не очень, скинте код у кого есть.
Заранее благодарю.
|
|
|