информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Атака на InternetSpanning Tree Protocol: недокументированное применениеСетевые кракеры и правда о деле Левина
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Очередное исследование 19 миллиардов... 
 Оптимизация ввода-вывода как инструмент... 
 Зловреды выбирают Lisp и Delphi 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
если вы видите этот текст, отключите в настройках форума использование JavaScript
ФОРУМ
все доски
FAQ
IRC
новые сообщения
site updates
guestbook
beginners
sysadmin
programming
operating systems
theory
web building
software
hardware
networking
law
hacking
gadgets
job
dnet
humor
miscellaneous
scrap
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
[Win32] решение 03.10.08 01:39  Число просмотров: 2723
Автор: + <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;
}

---
<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 совсем не очень, скинте код у кого есть.
Заранее благодарю.
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2025 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach