Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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
7-796
olimpic
2003-03-12 13:12
2003.05.01
Компонент для сбора информации о компьютере


3-440
Dimaz-z
2003-04-13 18:13
2003.05.01
Как склеить две базы данных Paradox?


1-598
saha
2003-04-18 17:52
2003.05.01
Hint


14-691
Дмитрий К.К.
2003-04-16 06:18
2003.05.01
Именинники 16 апреля


3-431
gary5555
2003-04-12 15:25
2003.05.01
Как сделать неизменной нумерацию строк???





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский