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

Вниз

Подсказки на ToolBar   Найти похожие ветки 

 
Comp ©   (2004-10-11 16:36) [0]

Здравствуйте, уважаемые мастера. Разрешите задать вам такой вопрос. Я создал ToolBar (чисто на API). Соответственно к нему кнопки и все остальное. Но вот с подсказками (ToolTip) у меня уже неделю большая проблема.
Пишу код:


procedure ToolbarCreate;
var
i:integer;

begin
for i:=0 to 9 do

with tbButtons[i] do
  begin
    ...
  end;

Toolbar1 :=CreateToolbarEx(handle,WS_VISIBLE+WS_BORDER+TBSTYLE_TOOLTIPS,
     1,1,Hinstance,105,@tbButtons,10,16,16,16,16, Sizeof(TTBButton));

TH:=SendMessage(Toolbar1,TB_GETTOOLTIPS ,0, 0);

// SendMessage(TH, TTM_TRACKACTIVATE,WPARAM(TRUE), LPARAM(@ti));
 
end;

procedure WndProc_OnNotify(lparametr:LongInt);

var
 ppd: PTOOLTIPTEXT;
 s:array[0..128] of Char;
begin
 ppd:=PTOOLTIPTEXT(lParametr);
 begin
   if (ppd.Hdr.Code =TTN_NEEDTEXT) then
   begin
      ppd.lpszText:="llkkkjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj";
     end;
 end;
end;

function WindowProc(hWnd,Msg,wParam,lParam:Longint):Longint; stdcall;
begin

 Result:=DefWindowProc(hWnd,Msg,wParam,lParam);

    case Msg of
         WM_COMMAND:
         ...
     
         WM_CREATE:...;
       

         WM_NOTIFY: WndProc_OnNotify(lparam);
    end;
end;

...

begin
...
ToolBarCreate;
...
end;



Почему не создается ToolTip?


Переменная TH после выполнения TB_GETTOOLTIPS не пустая - я проверял. Если выполнить
SendMessage(TH, TTM_TRACKACTIVATE,WPARAM(TRUE), LPARAM(@ti));
после TB_GETTOOLTIPS - подсказка вроде как появляется ("llkkkjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj"), но только с нулевыми координатами (в левом верхнем углу экрана). И висит постоянно. А это далеко не то, что нужно.

Что еще не хватает?
Подскажите пожалуйста. Буду благодарен за любой ответ.


 
DVM ©   (2004-10-11 17:04) [1]

Посмотри вот тут небольшой пример. Там усе работает.
Вообще то ты неправильно обрабатываешь WM_NOTIFY. Точнее не совсем.
http://www.ict.nsc.ru/~cancel/delphi/files/?act=d&id=3


 
Comp ©   (2004-10-11 17:15) [2]

DVM ©   (11.10.04 17:04) [1]


СПАСИБО ОГРОМНОЕ!


ТЕПЕРЬ РАЗБЕРУСЬ, ЧТО К ЧЕМУ.


 
XProger ©   (2004-10-11 17:19) [3]

Извини что не по вопросу, но где находится процедур CreateToolbarEx? Неужели чистый Win API?


 
Comp ©   (2004-10-11 17:27) [4]

В заключение:
Кое-какую инфу по тулбарам я еще откопал на MSDN

http://msdn.microsoft.com/library/en-us/shellcc/platform/commctls/toolbar/toolbar_using.asp

> XProger ©

Да, так тоже можно создавать тулбар - даже немного проще.Это API. Модуль СommСtrl.pas


 
Comp ©   (2004-10-11 19:26) [5]

Люди, я нашел ошибку. Твою дивизию!

Я делал:


while(GetMessage(Msg,HWnd,0,0))do
    begin
         TranslateMessage(Msg);
         DispatchMessage(Msg);
    end;


а надо( благодаря примеру [1]);


while(GetMessage(Msg,0,0,0))do
    begin
         TranslateMessage(Msg);
         DispatchMessage(Msg);
    end;


Народ, мастера всемиуважаемые, подскажите, почему такая ерунда? Ведь в примерах все делают - хендл окна указывают.

А все остальное в моем коде работает.


 
Суслик ©   (2004-10-11 19:28) [6]

Почему в точности не знаю, но могу процитировать кусок хелпа кассаемый второго параметра

0 - GetMessage retrieves messages for any window that belongs to the calling thread and thread messages posted to the calling thread via PostThreadMessage.

Таким образом ты обрабатываешь сообщения всех окон.


 
Comp ©   (2004-10-11 19:31) [7]


> Суслик ©   (11.10.04 19:28) [6]


0 - GetMessage ИЗВЛЕКАЕТ сообщения для любого окна, которое принадлежит разговору резьбы и сообщений резьбы объявленным в разговор резьбы через PostThreadMessage.

Понял. Спасибо.


 
Comp ©   (2004-10-11 19:38) [8]

Значит, если указать хендл - обрабатывать сообщения чисто указанного окна. Если 0 - то всех.

> Суслик ©   (11.10.04 19:28) [6]

Спасибо еще раз.


 
Суслик ©   (2004-10-11 19:44) [9]


>  [8] Comp ©   (11.10.04 19:38)

Да не за что.

Прочел бы Рихтера (советовал тебе раньше), сам бы ответ на свой вопрос знал. Почитай 26 главу. Много полезного узнаешь.



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

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

Наверх





Память: 0.47 MB
Время: 0.039 c
14-1099661468
Gorlum
2004-11-05 16:31
2004.11.21
Срочно, кто может помочь


1-1099788577
Роман
2004-11-07 03:49
2004.11.21
Автозагрузка файла


1-1100068819
markers
2004-11-10 09:40
2004.11.21
Как отбросить форму от курсора при наведении на форму


6-1095228765
kastik
2004-09-15 10:12
2004.11.21
Погода в сети через Delphi


3-1097314929
Ceval
2004-10-09 13:42
2004.11.21
разные скорости открытия DBFview ом и моей программой





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