CreateCompatibleBitmap - черный фон
От: pigeon Великобритания
Дата: 27.04.06 12:25
Оценка:
Добрый день.
Переделываю контрол, под свою задачу, необходимо чтобы бакграунд у контрола был прозрачным, вроде ничего сложного, нашел место где рисуется
   CMemDC(HDC hDC, LPRECT pRect = NULL)
   {
      ATLASSERT(hDC!=NULL);
      m_dc = hDC;
      if( pRect != NULL )
          m_rc = *pRect;
      else 
          m_dc.GetClipBox(&m_rc);

      CreateCompatibleDC(m_dc);
      ::LPtoDP(m_dc, (LPPOINT) &m_rc, sizeof(RECT) / sizeof(POINT));
      m_bitmap.CreateCompatibleBitmap(m_dc, m_rc.right - m_rc.left, m_rc.bottom - m_rc.top);
      m_hOldBitmap = SelectBitmap(m_bitmap);
      ::DPtoLP(m_dc, (LPPOINT) &m_rc, sizeof(RECT) / sizeof(POINT));
      SetWindowOrg(m_rc.left, m_rc.top);
   }

и вот тут запарка,не получается сделать безцветный фон, т.к насколько я понял CreateCompatibleBitmap
создает монохромную картинку и как дальше я что-то не понимаю, вроде нужно сделать битмапку с таки же цветом как и цвет окна на котором лежит контрол, но как это сделать? Или это как-то по другому делается? Или можна задать прозрачность при создании битмапа?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Premature optimization is the root of all evil in programming. Donald Knuth
Re: CreateCompatibleBitmap - черный фон
От: BuHHunyx Беларусь  
Дата: 27.04.06 12:44
Оценка:
Здравствуйте, pigeon, Вы писали:

P>Добрый день.

P>Переделываю контрол, под свою задачу, необходимо чтобы бакграунд у контрола был прозрачным, вроде ничего сложного, нашел место где рисуется
P>
P>   CMemDC(HDC hDC, LPRECT pRect = NULL)
P>   {
P>      ATLASSERT(hDC!=NULL);
P>      m_dc = hDC;
P>      if( pRect != NULL )
P>          m_rc = *pRect;
P>      else 
P>          m_dc.GetClipBox(&m_rc);

P>      CreateCompatibleDC(m_dc);
P>      ::LPtoDP(m_dc, (LPPOINT) &m_rc, sizeof(RECT) / sizeof(POINT));
P>      m_bitmap.CreateCompatibleBitmap(m_dc, m_rc.right - m_rc.left, m_rc.bottom - m_rc.top);
P>      m_hOldBitmap = SelectBitmap(m_bitmap);
P>      ::DPtoLP(m_dc, (LPPOINT) &m_rc, sizeof(RECT) / sizeof(POINT));
P>      SetWindowOrg(m_rc.left, m_rc.top);
P>   }
P>

P>и вот тут запарка,не получается сделать безцветный фон, т.к насколько я понял CreateCompatibleBitmap
P>создает монохромную картинку и как дальше я что-то не понимаю, вроде нужно сделать битмапку с таки же цветом как и цвет окна на котором лежит контрол, но как это сделать? Или это как-то по другому делается? Или можна задать прозрачность при создании битмапа?

Попробуй вместо m_dc использовать ::GetWindowDC(NULL);
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[2]: CreateCompatibleBitmap - черный фон
От: pigeon Великобритания
Дата: 27.04.06 13:03
Оценка:
Здравствуйте, BuHHunyx, Вы писали:

хъ

Так не помогает
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Premature optimization is the root of all evil in programming. Donald Knuth
Re[3]: CreateCompatibleBitmap - черный фон
От: BuHHunyx Беларусь  
Дата: 27.04.06 14:15
Оценка:
Здравствуйте, pigeon, Вы писали:

P>Здравствуйте, BuHHunyx, Вы писали:


P>хъ


P>Так не помогает


Re[5]: Как из HWND получить HBITMAP ?
Автор: Andrew S
Дата: 15.01.03
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.