Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2004.02.06;
Скачать: [xml.tar.bz2];

Вниз

Tooltips в Toolbar под XP.   Найти похожие ветки 

 
Владислав   (2003-11-27 10:16) [0]

Приветствую, Мастера.

Ситуация такая.

Создаю ToolBar в Outlook Express:

procedure TOEToolBar.CreateToolBar;
begin
if FToolBarInserted or (FReBarWindow32Handle = 0) then Exit;
if not GetTrialExpired then
FToolBarHandle :=
CreateToolbarEx(
FReBarWindow32Handle,
OEToolBarStyle,
ToolBarID,
1,
HInstance,
1000,
@ToolBarButtons,
ToolBarButtonsCount,
16,
16,
16,
16,
SizeOf(TTBButton))
else
FToolBarHandle :=
CreateToolbarEx(
FReBarWindow32Handle,
OEToolBarStyle,
ToolBarID,
1,
HInstance,
1000,
@TrialToolBarButtons,
TrialToolBarButtonsCount,
16,
16,
16,
16,
SizeOf(TTBButton));

if FToolBarHandle = 0 then Exit;

FillChar(FReBarBandInfo, SizeOf(TReBarBandInfo), #0);
with FReBarBandInfo do
begin
cbSize := SizeOf(TReBarBandInfo);
fMask := {RBBIM_COLORS or }RBBIM_TEXT or {RBBIM_BACKGROUND or}
RBBIM_STYLE or RBBIM_CHILD or RBBIM_CHILDSIZE or
RBBIM_SIZE or RBBIM_ID or RBBIM_HEADERSIZE;
fStyle := RBBS_CHILDEDGE or RBBS_FIXEDBMP or RBBS_BREAK;
lpText := BandText;
cch := BandTextSize;
wID := BandID;
hwndChild := FToolBarHandle;
cxMinChild := 24;
cyMinChild := 22;
cx := 110;
cxHeader := 110
end;

FBandNumber := SendMessage(FReBarWindow32Handle, RB_INSERTBANDA,
WPARAM(-1), LPARAM(@FReBarBandInfo));

FToolBarInserted := True

{$IFDEF DEBUG_PLUGIN}
;Debug(DebugOutputFile, "Toolbar is created", [])
{$ENDIF}
end;


Структуры и стиль такие:

ToolBarButtons: TOEToolBarButtons =
(
(iBitmap: 0; idCommand: IDM_CLEAN_INBOX; fsState: TBSTATE_ENABLED;
fsStyle: TBSTYLE_BUTTON; dwData: 0; iString: -1),
(iBitmap: 0; idCommand: 0; fsState: 0;
fsStyle: TBSTYLE_SEP; dwData: 0; iString: -1),
(iBitmap: 6; idCommand: IDM_ADD_FRIEND; fsState: TBSTATE_ENABLED;
fsStyle: TBSTYLE_BUTTON; dwData: 0; iString: -1),
(iBitmap: 1; idCommand: IDM_MANAGE_FRIENDS; fsState: TBSTATE_ENABLED;
fsStyle: TBSTYLE_BUTTON; dwData: 0; iString: -1),
(iBitmap: 0; idCommand: 0; fsState: 0;
fsStyle: TBSTYLE_SEP; dwData: 0; iString: -1),
{ (iBitmap: 5; idCommand: IDM_ADD_FILTER; fsState: TBSTATE_ENABLED;
fsStyle: TBSTYLE_BUTTON; dwData: 0; iString: -1),}
(iBitmap: 2; idCommand: IDM_MANAGE_FILTERS; fsState: TBSTATE_ENABLED;
fsStyle: TBSTYLE_BUTTON; dwData: 0; iString: -1),
(iBitmap: 0; idCommand: 0; fsState: 0;
fsStyle: TBSTYLE_SEP; dwData: 0; iString: -1),
(iBitmap: 3; idCommand: IDM_OPTIONS; fsState: TBSTATE_ENABLED;
fsStyle: TBSTYLE_BUTTON; dwData: 0; iString: -1)
);

TrialToolBarButtonsCount = 1;
TrialToolBarButtons: TTrialOEToolBarButtons =
(
(iBitmap: 4; idCommand: IDM_ABOUT; fsState: TBSTATE_ENABLED;
fsStyle: TBSTYLE_BUTTON; dwData: 0; iString: -1)
);

OEToolBarStyle =
Longint(
WS_CHILD or WS_VISIBLE or WS_CLIPSIBLINGS or WS_CLIPCHILDREN or
TBSTYLE_FLAT or TBSTYLE_TOOLTIPS or TBSTYLE_TRANSPARENT or
TBSTYLE_WRAPABLE or
CCS_TOP or CCS_NORESIZE or CCS_NOPARENTALIGN or CCS_ADJUSTABLE or
CCS_NODIVIDER or
WS_EX_LEFT or WS_EX_LTRREADING or WS_EX_RIGHTSCROLLBAR
);


Оконная процедура родителя тулбара:

function ReBarWindow32SubclassProc(hWnd: HWND; Msg: UINT;
wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;
var
Hint: string;
begin
try

{$IFDEF DEBUG_PLUGIN}
Debug(DebugOutputFile,
"ReBarWindow32 subclass procedure is called. " +
"hWnd 0x%.8x, Msg 0x%.8x, wParam 0x%.8x, lParam 0x%.8x",
[hWnd, Msg, wParam, lParam]);
{$ENDIF}

Result := CallWindowProc(@OEToolBar.FOriginReBarWindow32Proc, hWnd, Msg,
wParam, lParam);
case Msg of
WM_NOTIFY:
if OEToolBar.FToolBarInserted then
begin
with PToolTipText(lParam)^ do
begin
if hdr.code = TTN_NEEDTEXT then
begin
case hdr.idFrom of
IDM_CLEAN_INBOX: Hint := rsHINT_CLEAN_INBOX;
IDM_ADD_FRIEND: Hint := rsHINT_ADD_FRIEND;
IDM_MANAGE_FRIENDS: Hint := rsHINT_MANAGE_FRIENDS;
IDM_ADD_FILTER: Hint := rsHINT_ADD_FILTER;
IDM_MANAGE_FILTERS: Hint := rsHINT_MANAGE_FILTERS;
IDM_OPTIONS: Hint := rsHINT_OPTIONS;
IDM_HELP: Hint := rsHINT_HELP;
IDM_SA_ON_THE_WEB: Hint := rsHINT_SA_ON_THE_WEB;
IDM_PRODUCT_SALES: Hint := rsHINT_PRODUCT_SALES;
IDM_CUSTOMER_SERVICE: Hint := rsHINT_CUSTOMER_SERVICE;
IDM_ABOUT: Hint := rsHINT_ABOUT
else
Hint := "";
end;
if Length(Hint) > 0 then
Move(PChar(Hint)^, szText, Length(Hint));
end
end;
end;
RB_INSERTBANDA:
if not OEToolBar.FToolBarInserted then
begin
Inc(BandCount);
if BandCount = 4 then
OEToolBar.CreateToolBar
end
end

except
{$IFDEF DEBUG_PLUGIN}
on E: Exception do
begin
{$ENDIF}

Result := 0

{$IFDEF DEBUG_PLUGIN}
;
Debug(DebugOutputFile,
"!!!!!!!!!! EXCEPTION IN TOOLBAR WINDOW PROCEDURE !!!!!!!!!!", []);
Debug(DebugOutputFile,
"!!!!!!!!!! Exception class: %s; Exception Message: %s !!!!!!!!!!",
[E.Message, E.ClassName]);
end
{$ENDIF}

end
end;


Проблема такая. Под всеми ОС, кроме Windows XP, хинты отображаются. Нужно это реализовать и под XP. В чем проблемы? Как это реализовать?


 
Владислав   (2003-11-28 09:20) [1]

Мастера, неужели никто не сталкивался с подобным поведением? Плиз ткните носом, что я неправильно делаю.



Страницы: 1 вся ветка

Форум: "WinAPI";
Текущий архив: 2004.02.06;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.032 c
14-16601
Layner
2004-01-15 14:55
2004.02.06
Подскажите плз по Ecxel, открыл документ, а он изменил название


1-16288
Maksss
2004-01-25 17:00
2004.02.06
ListView


1-16282
DimonNew
2004-01-22 11:04
2004.02.06
Дата


3-16105
YuRock
2004-01-08 19:29
2004.02.06
Настройка BDE


1-16456
Галинка
2004-01-28 06:43
2004.02.06
О типах данных в Delphi





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский