Maks150988
Advanced Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору program sample; uses Windows, Messages, CommCtrl; {$R dialog.res} const RC_DIALOG = 101; ID_TRACKBAR = 101; var hApp : THandle; function AppFuncProc(hWnd : HWND; uMsg : UINT; wParam : WPARAM; lParam : LPARAM) : BOOL; stdcall; var BrushNew : hBrush; BrushOld : hBrush; PenBrush : hPen; begin Result := TRUE; case uMsg of WM_INITDIALOG : begin hApp := hWnd; end; WM_DESTROY, WM_CLOSE : begin PostQuitMessage(0); end; WM_NOTIFY : begin with PNMHdr(lParam)^ do if PNMHdr(lParam).idFrom = ID_TRACKBAR then begin case PNMHdr(lParam)^.code of NM_CUSTOMDRAW : begin with PNMLVCUSTOMDRAW(lParam)^ do begin case nmcd.dwDrawStage of CDDS_PREPAINT : begin Result := BOOL(CDRF_NOTIFYITEMDRAW); SetWindowLong(hApp, DWL_MSGRESULT, CDRF_NOTIFYITEMDRAW or CDRF_NOTIFYPOSTPAINT); end; CDDS_ITEMPREPAINT : begin case nmcd.dwItemSpec of TBCD_THUMB : begin BrushNew := CreateSolidBrush(RGB(200, 215, 240)); BrushOld := SelectObject(nmcd.hDC, BrushNew); FillRect(nmcd.hDC, nmcd.rc, BrushNew); PenBrush := CreatePen(PS_SOLID, 1, RGB(50, 105, 200)); SelectObject(nmcd.hDC, PenBrush); Rectangle(nmcd.hDC, nmcd.rc.Left, nmcd.rc.Top, nmcd.rc.Right, nmcd.rc.Bottom); DeleteObject(PenBrush); SetBkColor(nmcd.hDC, RGB(200, 215, 240)); SelectObject(nmcd.hDC, BrushOld); DeleteObject(BrushNew); SetBkMode(nmcd.hDC, TRANSPARENT); end; end; Result := BOOL(CDRF_SKIPDEFAULT); end; CDDS_ITEMPOSTPAINT : begin Result := BOOL(CDRF_SKIPDEFAULT); end; else Result := BOOL(CDRF_DODEFAULT); SetWindowLong(hApp, DWL_MSGRESULT, CDRF_DODEFAULT); end; // case nmcd.dwDrawStage of end; // with PNMLVCUSTOMDRAW(pnmh)^ do end; // NM_CUSTOMDRAW: end; end; end; else Result := FALSE; end; end; begin InitCommonControls; DialogBox(hInstance, MAKEINTRESOURCE(RC_DIALOG), 0, @AppFuncProc); end. |