Главная страница
    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.014 c
1-1132221959
murzik
2005-11-17 13:05
2005.12.18
Общий NumberFormat в Excel-е


2-1133521081
Suriken
2005-12-02 13:58
2005.12.18
гиперссылка


2-1133546839
coral
2005-12-02 21:07
2005.12.18
ListBox


2-1133175211
LionMen
2005-11-28 13:53
2005.12.18
Расшифровка файла


2-1133790627
adamov_a
2005-12-05 16:50
2005.12.18
StringGrid - как получить содержимое выделенных ячеек





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