Форум: "WinAPI";
Текущий архив: 2003.05.01;
Скачать: [xml.tar.bz2];
Внизкак создать ToolBar стилем как в Word XP????? Найти похожие ветки
← →
LeReve (2003-02-28 16:22) [0]как создать ToolBar стилем как в Word XP????? (вообще этот класс назыается не ToolBarWindow32, а MsoCommandBar, только создать его процедурой CreateWindow не получается =( )
← →
Slym (2003-03-02 09:48) [1]Классы не инициализированы... Система не знает об их существовании...
Сначала загрузи библиотеку где этот класс описан...
И вызови вней проце дуру инициализации классов
← →
LeReve (2003-03-03 08:56) [2]какие именно функции надо вызывать?
← →
Игорь Шевченко (2003-03-03 10:04) [3]Автору - а что, есть доступное описание, как работать с классом msoCommandBar ? Какие сообщения ему надо посылать, какие нотификации от него обрабатывать ? Одного CreateWindow не достаточно...
Если есть описание - читай :-)))
← →
NAlexey (2003-03-03 10:24) [4]Попробуй так:
Я даю вцелом ну там сам разберешся... если нет подскажу
procedure TfmImgView.DrawGridDrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
var
lGlyphIndex, lGridIndex: LongInt;
W, H, X, Y, lSysCount: Integer;
DC, BDC, MaskDC: HDC;
B, BitmapHandle, PrevBitmapHandle, MaskHandle: HBITMAP;
PrevPalette: HPALETTE;
ATextColor, ABackColor: COLORREF;
Brush, ABrush: HBRUSH;
Size: TSize;
OthPict: TBitMap;
procedure DrawShadow;
var
LogBrush: TLogBrush;
begin
GetObject(Brush, SizeOf(LogBrush), @LogBrush);
ATextColor := SetTextColor(DC, GetSysColor(COLOR_BTNSHADOW));
ABackColor := SetBkColor(DC, LogBrush.lbColor);
ABrush := SelectObject(DC, Brush);
StretchBlt(DC, X + 2, Y + 2, W, H, MaskDC,
0, 0, W, H, SRCCOPY);
SelectObject(DC, ABrush);
SetTextColor(DC, ATextColor);
SetBkColor(DC, ABackColor);
end;
begin
X := Rect.Left;
Y := Rect.Top;
Size.cx := Rect.Right - Rect.Left;
Size.cy := Rect.Bottom - Rect.Top;
with BtnImgCol do begin
OthPict := TBitMap.Create;
//OthPict.Transparent := True;
try
DMImages.SmallImagesCommon.GetBitmap(lGridIndex, OthPict);
if (OthPict.Width > Size.cx) or (OthPict.Height > Size.cy)
then
StretchBlt(DrawGrid.Canvas.Handle, X, Y, Size.cx, Size.cy,
OthPict.Canvas.Handle, 0, 0, OthPict.Width, OthPict.Height, SRCCOPY)
else begin
(*...*)
W := OthPict.Width;
H := OthPict.Height;
DC := CreateCompatibleDC(DrawGrid.Canvas.Handle);
B := CreateCompatibleBitmap(DrawGrid.Canvas.Handle, Size.cx, Size.cy);
B := SelectObject(DC, B);
PrevPalette := SelectPalette(DC, GetCurrentObject(DrawGrid.Canvas.Handle, OBJ_PAL), True);
RealizePalette(DC);
try
if (gdFocused in State) or (gdSelected in State) then
Brush := CreateSolidBrush($D4BFB7) //$DAD4D2
else
Brush := CreateSolidBrush(clWhite);
FillRect(DC, Classes.Rect(0, 0, Size.cx, Size.cy), Brush);
BDC := CreateCompatibleDC(DrawGrid.Canvas.Handle);
BitmapHandle := CreateCompatibleBitmap(DrawGrid.Canvas.Handle, W, H);
PrevBitmapHandle := SelectObject(BDC, BitmapHandle);
try
BitBlt(BDC, 0, 0, W, H, OthPict.Canvas.Handle, 0, 0, SRCCOPY);
MaskDC := CreateCompatibleDC(DrawGrid.Canvas.Handle);
MaskHandle := CreateBitmap(W, H, 1, 1, nil);
MaskHandle := SelectObject(MaskDC, MaskHandle);
try
ABackColor := SetBkColor(BDC, ColorToRGB(OthPict.TransparentColor));
BitBlt(MaskDC, 0, 0, W, H, BDC, 0, 0, SRCCOPY);
SetBkColor(BDC, ABackColor);
X := (Size.cx - OthPict.Width) div 2;
Y := (Size.cy - OthPict.Height) div 2;
if (gdFocused in State) or (gdSelected in State) then
begin
Dec(X, 1);
Dec(Y, 1);
DrawShadow;
end;
StretchBlt(DC, X, Y, W, H, MaskDC, 0, 0, W, H, MERGEPAINT);
BitBlt(BDC, 0, 0, W, H, MaskDC, 0, 0, SRCPAINT);
StretchBlt(DC, X, Y, W, H, BDC, 0, 0, W, H, SRCAND);
finally
DeleteObject(SelectObject(MaskDC, MaskHandle));
DeleteDC(MaskDC);
end;
finally
SelectObject(BDC, PrevBitmapHandle);
DeleteObject(BitmapHandle);
DeleteDC(BDC);
end;
with Rect do
BitBlt(DrawGrid.Canvas.Handle, Left, Top, Right - Left, Bottom - Top, DC, 0, 0, SRCCOPY);
finally
SelectPalette(DC, PrevPalette, False);
DeleteObject(SelectObject(DC, B));
DeleteDC(DC);
DeleteObject(Brush);
end;
(* ^ *)
end;
if (gdFocused in State) or (gdSelected in State) then
begin
DrawGrid.Canvas.Brush.Color := clBlue;
DrawGrid.Canvas.FrameRect(Rect);
end;
finally
OthPict.Free;
end;
end;
end;
← →
NAlexey (2003-03-03 10:30) [5]Да, и еще... если ты заметил, то картинка в ToolBar рисуются какбы тусклые или размытые, это тоже необходимо. Ну одним словом если это пригодится я тебе кину код как это сделать.
← →
LeReve (2003-03-03 19:40) [6]to (Игорь Шевченко) в том то и дело что нету =( даже в MSDN наверное какая сверх секретная разработка Microsoft, наврное поэтому на ниф в суды подавали =)))
to (NAlexey) спасибо конешно, не хотелось бы проресовывать, но за пример ещё раз спасибо! =)))
← →
NAlexey (2003-03-04 09:07) [7]Прошу прощения что не поделу, но:
>наверное какая сверх секретная разработка Microsoft,
это 20-30 строк кода то секретная разработка?
>не хотелось бы проресовывать
Мне интересно сколько придется написать стараясь вызвать этот самый класс, так сказать вешь в себе, и сколько потенциальных ошибок он будет в себе содержать?
Я таким образом рисую Cell в гриде, получается один в один как XP тулбар, захотел я, нарисовал что угодно в стиле XP:) и не нужны никакие сверхсекретные разработки от мелкософт.
← →
LeReve (2003-03-04 14:09) [8]да ни в этом дело что лень или ещё что нить, просто я не сторонник таких прорисовок, если использовать таких окон 20 то система будит намного значительнее загружена(можешь проверить сам, кстате делфи тоже всё к сожалению рисует сам, создай приложение на оюбом другом языке и увидишь разницу в потреблении сис ресурсов)
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2003.05.01;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.164 c