Ответить на сообщение
Вернуться к теме
Вы отвечаете на сообщение:
Автор: 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]
Сообщение:
Прикрепить: