Zdravím, mám jednoduchou aplikaci, která používá dialog vytvořený pomocí funkce DialogBox(...). Je nějak možné, aby tento dialog zpracovával klávesové zkratky vytvořené pomocí LoadAccelerators ze zdrojů, popřípadě jak na to ? už to hledám skoro hodinu a nemůžu nic pořádného najít ?1
Díky
Fórum › C / C++
Klávesové zkratky v dialogu
Klávesové zkratky se musí nějakým způsobem přeložit (klávesa -> odpovídající zpráva). K tomuto překladu se používá funkce TranslateAccelerator ve smyčce zpráv:
hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_ACCELERATORS));
// smycka zprav
while (GetMessage(&msg, NULL, 0, 0)) {
if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
Problém je, že u aplikace založené na modálním dialogu smyčku zpráv neovládáš. Takže buď použiješ klasické okno (CreateWindow) nebo zkusíš aplikaci založit na nemodálním oknu (což jsem nikdy nezkoušel a nevím, jestli to funguje, ale mohlo by) nebo si ty klávesy odchytneš a přeložíš v DialogProc sám.
Pokud používáš MFC, tak můžeš využít PreTranslateMessage, kam vložíš TranslateAccelerator.
Zjistit počet nových příspěvků
Přidej příspěvek
Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
Uživatelé prohlížející si toto vlákno
Uživatelé on-line: 0 registrovaných, 138 hostů
Podobná vlákna
Klávesové zkratky — založil Martin
Zruseni klavésové zkratky C# — založil Mrakoplas
Klávesové odkazování — založil Filip Had
Visual studio a klávesové skratky... — založil laik
Visual Studio 2012 a klavesove skratky — založil Jimi
Moderátoři diskuze