Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

WinHotKeyCtrl [D7, Win2k, WinXP]


ShiFT ©   (2005-10-18 13:14:00) 

http://rsdn.ru/article/controls/WinHotkeyCtrl.xml
Случайно никто не переделывал под Delphi версию для WinAPI?

Меня интересует несколько строк которые я не смог перевести в Delphi
#define MAKEWHCDATA(vkCode, fModSet, fModRel, fIsPressed) \
   ((DWORD)(((BYTE)((DWORD_PTR)(vkCode) & 0xff)) | \
   (((DWORD)((BYTE)((DWORD_PTR)(fModSet) & 0xff)))


ShiFT   (2005-10-20 10:44:00) [1]


> Скажем, неверное соглашение о вызове в WinHotKeyCtrlProc.
> (д.б. function(..): LResult; stdcall;)

А ведь в натуре. В этом была проблема. =(
Спасибо. Теперь работает.
А где можно прочитать об этих соглашениях о вызове??
Желательно на русском.


Leonid Troyanovsky   (2005-10-20 10:00:00) [2]


> ShiFT   (20.10.05 06:30) [3]
> почему возникает ошибка Rantime error 216??
>
> после этих строчек
>  SetWindowLong( hwndWhc, GWL_WNDPROC, LongInt( @_WinHotkeyCtrlProc));
>


И чему равен hwndWhc?
И что значит после строчек?
Если они идут подряд, то, причина, возможно, в первой.
Скажем, неверное соглашение о вызове в WinHotKeyCtrlProc.
(д.б. function(..): LResult; stdcall;)

--
Regards, LVT.


ShiFT   (2005-10-20 06:57:00) [3]

GWL_WNDPROC
   Sets a new address for the window procedure.
   Windows NT/2000/XP: You cannot change this attribute if the window does not belong to the same process as the calling thread.


но у меня ведь в том же процессе, в том же треде.

Как можно решить эту проблему????


ShiFT   (2005-10-20 06:30:00) [4]

почему возникает ошибка Rantime error 216??

после этих строчек
 SetWindowLong( hwndWhc, GWL_WNDPROC, LongInt( @_WinHotkeyCtrlProc));
и
 SetWindowLong( hwndWhc, GWL_USERDATA, dwWhcData);


ShiFT   (2005-10-19 08:13:00) [5]

help


ShiFT   (2005-10-18 13:24:00) [6]


> SetWindowLongPtr(hwndWhc, GWLP_WNDPROC, (LONG)(LONG_PTR)(WNDPROC)_WinHotkeyCtrlProc);

Может быть так???
 SetWindowLong( hwndWhc, GWL_WNDPROC, Integer( TFNWndProc( @_WinHotkeyCtrlProc)));


Наверх

Титульная страница Поиск, карта сайта Написать письмо