Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.01.23;
Скачать: CL | DM;

Вниз

API   Найти похожие ветки 

 
.:Grits:. ©   (2002-12-29 22:10) [0]

мой вопрос:
var
MyTBB:TTBButton;
Rect: TRect;
...
tbc:=SendMessage(Target, tb_BUTTONCOUNT, 0,0);
if tbc > 0 then begin

//получил выделенный элемент:
tbh:=SendMessage(Target, TB_GETHOTITEM , 0,0);

//Rect равен почему то всему ToolBox(y),
а не выделенному элементу????:
SendMessage(Target, TB_BUTTONSTRUCTSIZE, tbh, Longint(@Rect));

//а здесь компьютер вообще виснет???????:
SendMessage(Target, TB_GETBUTTON, tbh, Longint(@MyTBB));
...
Что я не так делаю ???


 
Юрий Зотов ©   (2002-12-29 23:10) [1]

1. > //получил выделенный элемент:

Из MSDN: Toolbar controls that do not have the TBSTYLE_FLAT style do not have hot items.

Насколько я помню, Вы работаете с Панелью Задач. И тогда Вы получили не выделенный элемент, а -1. Или $FFFFFFFF.


2. > //Rect равен почему то всему ToolBox(y), а не выделенному элементу????:

Из MSDN:
TB_BUTTONSTRUCTSIZE
wParam = (WPARAM) cb;
lParam = 0;
cb: - size, in bytes, of the TBBUTTON structure.

Поэтому WParam у Вас неверен, а LParam не имет смысла. Rect может быть равен чему угодно.


3. > //а здесь компьютер вообще виснет???????:

Еще хорошо, что не взрывается. Потому что предыдущим сообщением Вы установили BUTTONSTRUCTSIZE в совершенно невообразимое значение $FFFFFFFF и теперь он судорожно пытается заполнить структуру, которую Вы передали ему в LParam и которая якобы имеет такой размер. При этом явно вылезая туда, куда не нужно и портя то, что там лежит. Кстати, WParam тоже неверный.


4. > Что я не так делаю ???

IMHO, Вы невнимательно читаете документацию.


 
.:Grits:. ©   (2002-12-30 23:46) [2]

Юрий! спасибо большое за комментарии.
в действительности сообщения:
tb_BUTTONCOUNT, TB_GETHOTITEM
работают, и дают верные результаты (проверил)

с TB_BUTTONSTRUCTSIZE я конечно "херню сморозил"

Эта строка только в My.DLL(как function) не виснет:
SendMessage(Target, TB_GETBUTTON, tbh, Longint(@MyTBB));
//MyTBB.iString выдает одно и тоже значение для всех
элементов списка (?????)
как я получу теперь текст ?????

P.S.//Еще хорошо, что не взрывается....
Вы знали или догадались :-), но теперь мой 19дюймовый
монитор можно выбросить
в 14дюймовом вообще "ничо" не видно :-((((((((((


 
.:Grits:. ©   (2003-01-01 16:23) [3]

С новым годом всех!

...ну помогите же!


 
Юрий Зотов ©   (2003-01-01 17:37) [4]

> как я получу теперь текст ?????

TB_GETHOTITEM работает нормально? Ну и хорошо. Значит, индекс кнопки мы уже знаем. Осталось получить текст.

Из MSDN:

TB_GETBUTTONTEXT
wParam = (WPARAM) idButton;
lParam = (LPARAM) (LPTSTR) lpszText;


Второй способ:

1. Ставим нормальный размер структуры:
SendMessage(..., SizeOf(TTBButton), 0); // Один раз!!!
2. Берем данные:
SendMessage(..., TB_GETBUTTON, ..., Integer(@MyTTB));
3. String(iString) дает текст кнопки.


 
.:Grits:. ©   (2003-01-05 23:27) [5]

Спасибо большое!
на днях попробую...



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

Текущий архив: 2003.01.23;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.013 c
3-72167
PKT
2002-12-26 04:59
2003.01.23
SUM -> NULL


1-72288
Delph
2003-01-15 11:25
2003.01.23
QuickReport печать с N страницы по K возможна?


1-72369
Спрашивающий
2003-01-13 04:12
2003.01.23
Управление положением главной формы из немодального окна


3-72065
Ich Hasse
2003-01-05 21:06
2003.01.23
Access


14-72504
Юров Владимир
2003-01-06 18:18
2003.01.23
Win2000+Win2000