1. Nějak se mi nedaří nastavovat klávesové zkratky položkám v menu (voláním AddMenuItem). Plugin píšu v Delphi, možná je to tam trochu jinak, tak si to musím srovnat. Jaký má být parametr "hotKey" např. pro klávesovou zkratku Alt+F8?
2. Jak je to vlastně s klávesovou zkratkou v metodě AddMenuItem a nastavením klávesových zkratek v Plugin Manageru? Je to nějak propojené?
3. Jak v Plugin Manageru nastavím klávesové zkratky Alt+Delete, Shift+Delete, Ctrl+Delete? Pokaždké když stisknu Delete, v políčku se objeví "Žádné".
Klávesové zkratky u položek menu
-
- ALTAP Staff
- Posts: 5231
- Joined: 08 Dec 2005, 06:34
- Location: Novy Bor, Czech Republic
- Contact:
Dobrý den, zeptám se na úvod: četl jste dokumentaci shared\spl_base.h?
Konkrétně pro AddMenuItem a pro makro SALHOTKEY?
Pokud používáte headry pro Delphi a ty jsou bez komentářů (pouze odhaduji), chtělo by to stáhnout si naše originální SDK a číst si v něm.
Konkrétně pro AddMenuItem a pro makro SALHOTKEY?
Pokud používáte headry pro Delphi a ty jsou bez komentářů (pouze odhaduji), chtělo by to stáhnout si naše originální SDK a číst si v něm.
- stepand76
- Plugin Developer
- Posts: 455
- Joined: 16 Apr 2007, 21:22
- Location: Pardubice, Czech Republic
Originální SDK používám jako dokumentaci.
Pro překlad používám toto:
http://forum.altap.cz/viewtopic.php?t=2177.
Pro SALHOTKEY je tam toto:
Což je podle mě správně.
Předávám tam vk=VK_F8, mods=MOD_ALT, což je ve výsledku 378 (dec). U položky v menu, žádná klávesová zkratka není zobrazená a ani nefunguje. Co dělám špatně?
Pro překlad používám toto:
http://forum.altap.cz/viewtopic.php?t=2177.
Pro SALHOTKEY je tam toto:
Code: Select all
// makro pro pripravu 'HotKey' pro AddMenuItem()
// LOWORD - hot key (virtual key + modifikatory) (LOBYTE - virtual key, HIBYTE - modifikatory)
// mods: kombinace HOTKEYF_CONTROL, HOTKEYF_SHIFT, HOTKEYF_ALT
// examples: SALHOTKEY('A', HOTKEYF_CONTROL | HOTKEYF_SHIFT), SALHOTKEY(VK_F1, HOTKEYF_CONTROL | HOTKEYF_ALT | HOTKEYF_EXT)
//#define SALHOTKEY(vk,mods,cst) ((DWORD)(((BYTE)(vk)|((WORD)((BYTE)(mods))<<8))|(((DWORD)(BYTE)(cst))<<16)))
function SALHOTKEY( vk : Byte; mods : Word ) : DWORD;
begin
Result:= (vk or (mods shl 8));
end;
Předávám tam vk=VK_F8, mods=MOD_ALT, což je ve výsledku 378 (dec). U položky v menu, žádná klávesová zkratka není zobrazená a ani nefunguje. Co dělám špatně?
-
- ALTAP Staff
- Posts: 5231
- Joined: 08 Dec 2005, 06:34
- Location: Novy Bor, Czech Republic
- Contact:
Zkusil jsem cvičně přeložit Demo plugin v Microsoft Visual C++ a vše funguje.
Upravil jsem řádek:
Výsledek makra SALHOTKEY(VK_F8, HOTKEYF_ALT) je 0x00000477.
Doporučuji minimálně pro tyto testy nainstalovat Microsoft Visual C++ 2008 EE. Je zdarma a s ním náš Demo plugin chodí. Interface do Delphi zjevně není dostatečně odladěný a takto bychom jen ztráceli čas komunikací na obou stranách.
Upravil jsem řádek:
Code: Select all
salamander->AddMenuItem(0, "E&nter Disk Path", SALHOTKEY('Z', HOTKEYF_CONTROL | HOTKEYF_SHIFT), ...
salamander->AddMenuItem(0, "E&nter Disk Path", SALHOTKEY(VK_F8, HOTKEYF_ALT), ...
Doporučuji minimálně pro tyto testy nainstalovat Microsoft Visual C++ 2008 EE. Je zdarma a s ním náš Demo plugin chodí. Interface do Delphi zjevně není dostatečně odladěný a takto bychom jen ztráceli čas komunikací na obou stranách.
-
- ALTAP Staff
- Posts: 5231
- Joined: 08 Dec 2005, 06:34
- Location: Novy Bor, Czech Republic
- Contact:
Pro sejmutí kláves používáme standardní Hot Key control z Windows: http://msdn.microsoft.com/en-us/library ... S.85).aspx
Zřejmě tyto kombinace nepodporuje a bylo by potřeba napsat vlastní control.
Zřejmě tyto kombinace nepodporuje a bylo by potřeba napsat vlastní control.