![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как глобально, во всей програме отключить хинты?
Trible © (2006-11-26 23:08:00)Привет! Как глобально, во всей програме отключить хинты?
что то типа KOLProject1.showhint:=false.
Использую kolmhTooltip.pas с директивой.
Galkov (2006-12-05 09:07:00) [1]Ну может коллега FPC любит :)))
Vladimir Kladov (2006-12-04 19:24:00) [2]ничуть. Посмотрите код, который генерит Delphi. Он не тупой. Создание дополнителньой переменной ничего не стоит, если есть возможность использовать для нее регистр. Смотреть с включенной оптимизацией.
Trible (2006-12-04 17:51:00) [3]Более быстрый вариант:
case Msg.message of
WM_NOTIFY: begin
if PNMHdr(Msg.lParam).code = {TTN_SHOW} 0-520-1 then
begin
SetWindowPos( PNMHdr(Msg.lParam).hwndFrom, 0, 0, 0, 0, 0, SWP_HIDEWINDOW
or SWP_NOZORDER or SWP_NOACTIVATE );
Result := TRUE;
end;
end;
end; // of case
Trible (2006-12-04 16:36:00) [4]Trible = Stan :)
Stan (2006-12-04 16:35:00) [5]Спасибо вам Владимир на потраченное на меня время!
Удачного дня! Когда нибудь пригожусь :)
Vladimir Kladov (2006-12-03 19:23:00) [6]
function TForm1.KOLApplet1Message(var Msg: tagMSG;
var Rslt: Integer): Boolean;
var NE: PNMHdr;
begin
Result := FALSE;
if (Msg.message = WM_NOTIFY) then
begin
NE := Pointer( Msg.lParam );
if NE.code = {TTN_SHOW} 0-520-1 then
begin
SetWindowPos( NE.hwndFrom, 0, 0, 0, 0, 0, SWP_HIDEWINDOW
or SWP_NOZORDER or SWP_NOACTIVATE );
Result := TRUE;
end;
end;
end;
Trible (2006-12-03 16:48:00) [7]Пробовал и WM_Create перехватывать и смотрел класс окна. Нету тултипа . А как по WM_SHOWWINDOW определить незнаю даже к чему прицепиться. что порекомендуете?
Trible (2006-12-03 16:36:00) [8]
> любое сообщение обязаетльно пройдет через Applet.OnMessage
Перехватываю в Applet.OnMessage WM_Activate. Смотрю стиль (и расширеный) каждого - нету ничего.
Vladimir Kladov (2006-11-29 15:20:00) [9]все можно сделать, любое сообщение обязаетльно пройдет через Applet.OnMessage, если в программе есть Applet. Гасить нужно обычный показ окна, относящийся к конам класса тултипа.
Trible (2006-11-28 22:50:00) [10]Но так больше геморроя...
Trible (2006-11-28 22:48:00) [11]Может лучше все - таки самому хинты создавать?
Vladimir Kladov (2006-11-27 21:13:00) [12]нет, так что-то не получилось тоже. Все равно показываются.
Vladimir Kladov (2006-11-27 21:03:00) [13]с этим наполовину разобрался: у меня в проекте был включен UNICODE_CTRLS, как только убрал, стали появляться.
И вот что заметил: окно тултипа создается напрямую вызовом CreateWindowEx. Попробуйте сделать свой Run (просто скопировать из KOL в dpr) и в нем поставить обработчик вроде такого:
peekmessage...
if disabletooltips and (msg.message >= DWORD(TTM_FIRST)) and
(msg.message <= DWORD(TTM_LAST)) then // ничего не делать
else
begin
transaltemessage...
dispatchmessage ...
end;
Vladimir Kladov (2006-11-27 20:51:00) [14]тут какая-то ерунда: если на форме есть аплет, то хинты вообще не показываются. Надо посмотреть, в чем дело.
Trible (2006-11-27 18:34:00) [15]Ну не все из показанных, а те кот. по смыслу подходят.. эт я скопировал из msdn
Trible (2006-11-27 18:33:00) [16]Или я что то недопонял, но я большинство сообщений перепробовал в Applet.OnMessage. TTM_ACTIVATE
TTM_ADDTOOL
TTM_DELTOOL
TTM_ENUMTOOLS
TTM_GETCURRENTTOOL
TTM_GETTEXT
TTM_GETTOOLCOUNT
TTM_GETTOOLINFO
TTM_HITTEST
TTM_NEWTOOLRECT
TTM_RELAYEVENT
TTM_SETDELAYTIME
TTM_SETTOOLINFO
TTM_UPDATETIPTEXT
TTM_WINDOWFROMPOINT
Ни одно не выполняетсья.... При показе хинта..
Trible (2006-11-27 16:08:00) [17]Спасибо!
Vladimir Kladov (2006-11-27 15:17:00) [18]Только через сообщения Applet.OnMessage, смотрите, какие TTM_ приходят, и гасите.