Форум С++

 

Ответить на сообщение

Вернуться к теме

Вы отвечаете на сообщение:

Автор: bronenos   (27.11.2008 в 01:10)
Вырезка из моего WM Today плагина, может чем поможет
UPD: Виноват, не дочитал про контрол в окне.. но все равно :)


/* Прорисовка всего */
void DrawAll()
{
PAINTSTRUCT ps;
HDC dc;
HBITMAP hbmMem, hbmOld;
RECT rc;

/* Подготовки к рисованию */
GetClientRect(::hWnd, &rc);
dc = BeginPaint(::hWnd, &ps);

::hDC = CreateCompatibleDC(dc);
hbmMem = CreateCompatibleBitmap(dc, rc.right, ::ScrHeight);
hbmOld = (HBITMAP) SelectObject(::hDC, hbmMem);

/* Придаем плагину прозрачность */
if (!::selected)
{
TODAYDRAWWATERMARKINFO dwi;
dwi.hdc = ::hDC;
dwi.hwnd = ::hWnd;
dwi.rc = rc;
SendMessage(::hDesktop, TODAYM_DRAWWATERMARK, 0, (LPARAM) &dwi);
}
/* Если плагин выделен - закрашиваем его */
else
{
FillRect(::hDC, &rc, ::hbrHl);
}

/* Фон букв прозрачный */
SetBkMode(::hDC, TRANSPARENT);
/* Цвет текста, в зависимости от состояния выделения плагина */
SetTextColor(::hDC, !::selected ? ::cText : ::cHlText);

/* Прорисовка времени */
if (!::editor)
{
DrawTime();
}
/* Или даты для описания */
else
{
rc.left = _(3);
rc.top = _(3);

TCHAR date[MAX_PATH];
wsprintf(date, L"%d %s %d", ::editing+1, _e(::months[::month_now], ::e_months[::month_now]), ::year_now);
DrawText(::hDC, date, -1, &rc, DT_SINGLELINE);
}

/* Завершение рисования и удаление временных объектов */
BitBlt(dc, 0, 0, rc.right, ::ScrHeight, ::hDC, 0, 0, SRCCOPY);

SelectObject(::hDC, hbmOld);
DeleteObject(hbmMem);
DeleteDC(::hDC);

EndPaint(::hWnd, &ps);
}


Ваше имя:

Пароль:

Цитировать

Используйте тэги для выделения текста:
Код: [code][/code]
Жирный: [b][/b]
Наклонный: [i][/i]
URL: [url][/url]

Сообщение:

Прикрепить: