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

Вниз

Ипользование SHGetImageList   Найти похожие ветки 

 
volser   (2005-12-11 15:20) [0]

Если у кого есть пример использования функции SHGetImageList в делфи, поделитесь плиз!


 
volser   (2005-12-11 20:00) [1]

Вот моя не успешная попытка
http://all-tours.colocall.com/1.zip

Возвращает реализацию на интерфейс нормально, но методы не вызывает.
Можно ли описывать не все методы интерфейса?
После того как вызываю метод, при удалении интерфейса вылетает эксепшин.

Может кто подскажет в чем проблема?


 
Набережных С. ©   (2005-12-11 20:43) [2]


> volser   (11.12.05 20:00) [1]


> Можно ли описывать не все методы интерфейса?

Если этот интерфейс потомок IDispatch, то можно описать его как дисинтерфейс, указав только нужные методы, и работать с этим диспинтерфейсом. Можно даже вообще не описывать, если использовать позднее связывание. В Delphi это удобнее всего делать через переменную типа OleVariant. В остальных случаях необходимо описывать все методы. Правда, если некоторые методы точно не будут использоваться, то вместо них можно вставить просто заглушки типа procedure Stub1, procedure Stub2 etc, но порядок следования и количество методов должны точно совпадать, иначе компилятор не сможет правильно произвести вызов. Я не рекомендую так делать, это чревато неприятностями, лучше потратить лишние 5-10 минут и полностью описать интерфейс. Или поискать в сети, скорее всего где-нибудь, кто-нибудь, да выложил.


 
volser   (2005-12-11 21:51) [3]

Не интерфейс потомок IUnknown

Тогда вопрос по переводу с с++ в делфи.

CPP:
       virtual HRESULT STDMETHODCALLTYPE Add(
           HBITMAP hbmImage,
           HBITMAP hbmMask,
           int *pi) = 0;

Delphi:

function  Add(hbmImage : HBITMAP; hbmMask : HBITMAP; out pi: Integer) : HRESULT; stdcall;

Правильно ли я перевел метод, в частности инетесует параметр pi?


 
Набережных С. ©   (2005-12-12 12:00) [4]


> volser   (11.12.05 21:51) [3]

В общем, правильно. Но по поводу параметра pi нужно смотреть IDL с описанием интерфейса, либо документации документацию. В сомнительных случаях для передаваемых по ссылке парамтров вполне допустимо использовать модификатор var. Хотя и использование out там, где необходим var, не приведет к неправильному вызову функции , но вполне может привести к неправильному результату работы метода при межпроцессном вызове.

Ну а в данном конкретном случае этот параметр описан MSDN как выходной, следовательно out - совершенно правильно


 
Набережных С. ©   (2005-12-12 13:38) [5]

Ну раз никто не поправил, то придется самому:) В фразе "Хотя и использование out там, где необходим var, не приведет к неправильному вызову функции , но вполне может привести к неправильному результату работы метода при межпроцессном вызове" последние слова "при межпроцессном вызове" надобно выкинуть. Проблемы могут возникнуть при любой дистанции вызова, эт я малость поспешил, о своем тут в тот момент думал:))



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

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

Наверх





Память: 0.46 MB
Время: 0.013 c
1-1138525707
EBS
2006-01-29 12:08
2006.03.05
Отладка


2-1140412806
Rubey
2006-02-20 08:20
2006.03.05
Изменить MessageDlg


2-1140178741
TAN_K
2006-02-17 15:19
2006.03.05
База данных на FoxPro


15-1139324718
Человек
2006-02-07 18:05
2006.03.05
LPT порт


2-1139857519
Rom
2006-02-13 22:05
2006.03.05
Проблемы с Locate





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