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

Вниз

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

 
ShiFT   (2005-10-18 13:14) [0]

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))) << 8) | \
   (((DWORD)((BYTE)((DWORD_PTR)(fModRel) & 0xff))) << 16) | \
   (((DWORD)((BYTE)((DWORD_PTR)(fIsPressed) & 0xff))) << 24)))


SetWindowLongPtr(hwndWhc, GWLP_WNDPROC, (LONG)(LONG_PTR)(WNDPROC)_WinHotkeyCtrlProc);
почемуто не равно
SetWindowLong(hwndWhc, GWL_WNDPROC, Integer( @_WinHotkeyCtrlProc));

и

 UINT uMenuID = TrackPopupMenu( hmenu,
   TPM_RIGHTALIGN | TPM_RIGHTBUTTON | TPM_NONOTIFY | TPM_RETURNCMD,
   LOWORD(lParam), HIWORD(lParam), 0, hwnd, NULL);

 if (uMenuID && uMenuID < 256) {
   switch (uMenuID) {
//....
   }
 }

как TrackPopupMenu может возвращать Integer в то время когда он возвращает Boolean??
в MSDN нашел
Return Value
   If you specify TPM_RETURNCMD in the uFlags parameter, the return value is the menu-item identifier of the item that the user selected. If the user cancels the menu without making a selection, or if an error occurs, then the return value is zero.
   If you do not specify TPM_RETURNCMD in the uFlags parameter, the return value is nonzero if the function succeeds and zero if it fails. To get extended error information, call GetLastError.

и как это использовать в Delphi?

Вообщем направте на путь истенный. =)


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


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

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


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

help


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

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

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


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

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.


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

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


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


> 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 10:44) [6]


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

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



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

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

Наверх




Память: 0.46 MB
Время: 0.011 c
2-1132760042
Lexa1111
2005-11-23 18:34
2005.12.18
Как при помощи Delphi открыть файл


2-1133349981
st_uzver
2005-11-30 14:26
2005.12.18
winexec


2-1133431193
FShadow
2005-12-01 12:59
2005.12.18
Выбор дочерних MDI-окон с помощью набора закладок TabControl. Как


14-1132954799
dior
2005-11-26 00:39
2005.12.18
я не могу написать тест на делфи(((


14-1133078119
ArtemESC
2005-11-27 10:55
2005.12.18
Обработчик прерываний





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