Форум: "Потрепаться";
Текущий архив: 2003.01.23;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.292 c