![]() |
Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply |
![]() ![]() ![]() |
|
WIN32API |
|
|||
Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 2.4.2006 Репутация: нет Всего: нет |
Здравствуйте, уважаемые... Использую wnaspi32.dll. Естественно есть заголовочные файлы к этой библиотеке. Вопрос в том,
как добавить CD-устройства в ComboBox на чистом WIN32API. У меня есть пример, использующий TObject, а надо без него. Немогу разобрать откуда берется идентификатор, который заносится в TObject при заполнении |
|||
|
||||
Rouse_ |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 469 Регистрация: 23.4.2005 Репутация: 18 Всего: 29 |
На АПИ? Через отпраку управляющей команды CB_ADDSTRING на хэндл ComboBox-а.
|
|||
|
||||
WIN32API |
|
|||
Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 2.4.2006 Репутация: нет Всего: нет |
Єто вопрос для тех, кто работал с wnaspi32.dll без VCL. Мне сложновато сформулировать его правильно... |
|||
|
||||
Rouse_ |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 469 Регистрация: 23.4.2005 Репутация: 18 Всего: 29 |
ComboBox.Handle даст тебе описатель оконного элемента которому необходимо послать сообщение.
|
|||
|
||||
WIN32API |
|
|||
Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 2.4.2006 Репутация: нет Всего: нет |
В чужом примере на VCL в КомбоБокс идет запись:
ComboBox1.Items.AddObject(String, tObject) В tObject вносится идентификатор СD-устройства типа - 345677. Откуда он берется и как его мне зацепить? |
|||
|
||||
Rouse_ |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 469 Регистрация: 23.4.2005 Репутация: 18 Всего: 29 |
Тэкс, чуствуется что ты чего-то очень сильно не понимаешь. Здается мне что 345677 это указатель на область памяти с экземпляром объекта типа ТObject. Давай код чужого примера...
|
|||
|
||||
WIN32API |
|
|||
Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 2.4.2006 Репутация: нет Всего: нет |
Там одна функция тянет за собой другую. Разобратся сложно. Попробую что-то вырезать...
|
|||
|
||||
WIN32API |
|
|||
Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 2.4.2006 Репутация: нет Всего: нет |
|
|||
|
||||
Voyager |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 532 Регистрация: 8.2.2005 Репутация: 4 Всего: 18 |
|
|||
|
||||
WIN32API |
|
|||
Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 2.4.2006 Репутация: нет Всего: нет |
Да это все понятно. Внимательно на код посмотрите. Там добавляется TObject(Device)???????????????
|
|||
|
||||
Rouse_ |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 469 Регистрация: 23.4.2005 Репутация: 18 Всего: 29 |
Это указатель на экземпляр класса...
В твоем случе
А берется он отседова: SCSIinquiryDeviceInfo Получить обратно экземпляр:
|
||||
|
|||||
WIN32API |
|
|||
Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 2.4.2006 Репутация: нет Всего: нет |
На основе кода от Rouse_ и Voyager я сделал следующее, но где-то допустил ошибку и чувствую, что не одну....
|
|||
|
||||
Rouse_ |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 469 Регистрация: 23.4.2005 Репутация: 18 Всего: 29 |
ItemIndex это индекс элемента с которым ты хочешь асоцииорвать информацию.
В твоем коде, ты добавляешь один единственный элемент, его индекс ноль Соответственно вот этот код не имеет смысла, т.к. элементов с такими индексами не существует:
Вот этот ко также не верен, т.к. ты читаешь адрес указателя, а тебе нужно читать данные по этому указателю:
|
||||
|
|||||
WIN32API |
|
|||
Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 2.4.2006 Репутация: нет Всего: нет |
Так как же сделать то???????????????? Помогите!
![]() |
|||
|
||||
WIN32API |
|
|||
Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 2.4.2006 Репутация: нет Всего: нет |
С добавление вроде разобрался???? А вот с чтение траблы. Помогите.!!!!
|
|||
|
||||
Rouse_ |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 469 Регистрация: 23.4.2005 Репутация: 18 Всего: 29 |
чему равен ItemIndex на момент вызова данной функции:
|
|||
|
||||
WIN32API |
|
|||
Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 2.4.2006 Репутация: нет Всего: нет |
На момент вызова
_Object := PObject(SendMessage(Combobox1, CB_GETITEMDATA, ItemIndex, 0))^; прога вылетает. (Рантайм эррор) Добавлено @ 15:57 Стоп. я понял вопрос. ItemIndex должен зацепить текущий выбранный пункт, а потом уже: _Object := PObject(SendMessage(Combobox1, CB_GETITEMDATA, ItemIndex, 0))^; Или я ошибаюсь? |
|||
|
||||
Rouse_ |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 469 Регистрация: 23.4.2005 Репутация: 18 Всего: 29 |
угу
![]() вообщето ItemIndex должен быть номером существующего итема... Не важно, выбран он или нет |
|||
|
||||
WIN32API |
|
|||
Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 2.4.2006 Репутация: нет Всего: нет |
Так?
ItemIndex = SendMessage(Combobox1, CB_GETCURSEL, 0, 0); Если нет, то как его определить? |
|||
|
||||
Rouse_ |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 469 Регистрация: 23.4.2005 Репутация: 18 Всего: 29 |
да, это тебе вернет текущий выбранный элемент...
|
|||
|
||||
WIN32API |
|
|||
Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 2.4.2006 Репутация: нет Всего: нет |
CD_ROM_DEVICE в любом случае возвращает один и тот же идентификатор. какое бы устройство в комбобоксе я не выбрал, получается одно и то же. При этом я правильно обрабатываю сообщение, которое отвечает за изменения в комбобоксе. может, ошибка при добавлении - CB_SETITEMDATA?
|
|||
|
||||
WIN32API |
|
|||
Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 2.4.2006 Репутация: нет Всего: нет |
Хочу заметить, что получаемый идентификатор неверный, т.к. немогу управлять устройством.
|
|||
|
||||
Rouse_ |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 469 Регистрация: 23.4.2005 Репутация: 18 Всего: 29 |
Естественно он вернет тебе один и тот же обьект, потомучто ты после добавление нового элемента назначешь обьект связанный с ним всем существующим элементам, затирая их предыдущее значение:
|
|||
|
||||
WIN32API |
|
|||
Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 2.4.2006 Репутация: нет Всего: нет |
Все равно получаю один и тот же идентификатор, который так и неработает.
|
|||
|
||||
Rouse_ |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 469 Регистрация: 23.4.2005 Репутация: 18 Всего: 29 |
Блин, чудак человек, закоментируй вот эту строку:
|
|||
|
||||
WIN32API |
|
|||
Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 2.4.2006 Репутация: нет Всего: нет |
Да тоже самое. Я уже запахался честно говоря...
|
|||
|
||||
Rouse_ |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 469 Регистрация: 23.4.2005 Репутация: 18 Всего: 29 |
Что тоже самое? Для всех элементов один и тот же обьект возвращается или теперь они разные?
|
|||
|
||||
WIN32API |
|
|||
Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 2.4.2006 Репутация: нет Всего: нет |
Для всех элементов один и тот же обьект возвращается!!! Бред какой-то...
|
|||
|
||||
Rouse_ |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 469 Регистрация: 23.4.2005 Репутация: 18 Всего: 29 |
Давай сюда проект...
|
|||
|
||||
WIN32API |
|
|||
Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 2.4.2006 Репутация: нет Всего: нет |
||||
|
||||
Rouse_ |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 469 Регистрация: 23.4.2005 Репутация: 18 Всего: 29 |
Делай так:
|
|||
|
||||
WIN32API |
|
|||
Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 2.4.2006 Репутация: нет Всего: нет |
Огромнейшее спасибо!
И чтобы подитожить все, я хотел бы узнать, то, что возврашает _Object в данном случае может менятся? Мне интерестно будет ли он другим, если пользователь подключит или отключит еще один сидюк? Знать это полезно, если надо будет запоминать выбранное устройство, например, в реестре. |
|||
|
||||
Rouse_ |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 469 Регистрация: 23.4.2005 Репутация: 18 Всего: 29 |
Конечно будет меняться - это значение действительно только от момента создания обьекта до его разрушения, если создать такойже обьект после разрушения то число будет другим...
|
|||
|
||||
WIN32API |
|
|||
Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 2.4.2006 Репутация: нет Всего: нет |
Сенкс!!!!
На этом можно считать тему закрытой. |
|||
|
||||
ShEriF |
|
|||
Новичок Профиль Группа: Участник Сообщений: 1 Регистрация: 30.5.2006 Репутация: нет Всего: нет |
Привет всем, а можно мне примерчик добавления названий CD-ROMs , как в демке от WIN32API. тока написанный на Delphi v7
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: WinAPI и системное программирование" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |