Ik heb nou een compleet programma gemaakt in vb, volgens de 3lagen architectuur en componentenbouw. Ik maak gebruik van een soort MDI-principe, de programma onderdelen(Active X DLLS, waarin de componenten op een frame staan) laad ik in een picturebox mbv SetParent. En gebruik hele tijd zelfde menu/werk/statusbalk. Maar ik kom beetje in de problemen met de toetsafvanging, er zitten veel sneltoetsen in mn programma, maar vind het erg onoverzichtelijk worden als ik nou bij elk component bij Key_down afvanging moet doen, en in sommige gevalle is het mij niet duidelijk waar de focus is en dus werken de sneltoetsen niet altijd. Nou vroeg ik me af of ik niet gewoon nog een programmaonderdeel erbij kan laden die gedurende het hele project alle toetsen afvangt. Maar dan ook alleen voor mijn project, en dat hij bv niet de toetsenafvangt als je even ALTTABT naar Word oid.
Als je een MDI-applicatie hebt gemaakt wordt als het goed is het hoofdscherm ook gezien als hoofdscherm voor de applicatie. Als je dan daarvan de keypreview op True zet en je handelt daar alle keys af bij de OnKeyPress lijkt het mij dat dit zou moeten werken?
Je kunt dan alle shortcuts doorsturen naar de schermen/onderdelen waar ze voor bedoeld zijn...
Je kunt dan alle shortcuts doorsturen naar de schermen/onderdelen waar ze voor bedoeld zijn...
Ik heb dus geen MDI maar iets wat erop lijkt gemaakt.. omdat et anders niet volgens componentenbouw/3lagen zou kunnen.OZ-Gump schreef op 07 juni 2003 @ 10:32:
Als je een MDI-applicatie hebt gemaakt wordt als het goed is het hoofdscherm ook gezien als hoofdscherm voor de applicatie. Als je dan daarvan de keypreview op True zet en je handelt daar alle keys af bij de OnKeyPress lijkt het mij dat dit zou moeten werken?
Je kunt dan alle shortcuts doorsturen naar de schermen/onderdelen waar ze voor bedoeld zijn...
onkeypress? ik heb het nu gewoon bij keydown staan. maar dit werkt allemaal niet echt lekker en heb keypreview al op true gezet
Je kunt een Windows Hook zetten, die vangt alle keys binnen je app af voor je, kijk naar SetWindowsHookEx() en dan in het bijzonder de WH_KEYBOARD hook.
Zet lpfn op je centrale procedure, hMod op NULL en dwThreadID op 0, je vangt dan alleen de keys van je eigen app op. Zie ook de MSDN over SetWindowsHookEx en KeyboardProc
Zet lpfn op je centrale procedure, hMod op NULL en dwThreadID op 0, je vangt dan alleen de keys van je eigen app op. Zie ook de MSDN over SetWindowsHookEx en KeyboardProc
- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!
Maar werkt dit ook als je meerdere dlls draait tegelijk? want zijn eigenlijk dus allemaal verschillende programmas die afzonderlijk geladen kunnen worden in de hoofd applicatieGerco schreef op 08 June 2003 @ 14:33:
Je kunt een Windows Hook zetten, die vangt alle keys binnen je app af voor je, kijk naar SetWindowsHookEx() en dan in het bijzonder de WH_KEYBOARD hook.
Zet lpfn op je centrale procedure, hMod op NULL en dwThreadID op 0, je vangt dan alleen de keys van je eigen app op. Zie ook de MSDN over SetWindowsHookEx en KeyboardProc
Ja, want een DLL wordt in-process geladen, dus het draait allemaal in hetzelfde programma. Ik weet niet zeker of het gaat werken met multithreaded dlls, maar voor zover ik weet snapt VB die toch niet in een DLL, alleen in een activex exe.robbertb schreef op 08 juni 2003 @ 14:35:
Maar werkt dit ook als je meerdere dlls draait tegelijk? want zijn eigenlijk dus allemaal verschillende programmas die afzonderlijk geladen kunnen worden in de hoofd applicatie
- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!
De DLLS zijn idd multithreaded. Maar het klinkt interessant, maar is er niet al eens zoiets gemaakt door iemand? Is beetje zonde van de tijd om het te make als het al ergens bestaatGerco schreef op 08 June 2003 @ 14:41:
[...]
Ja, want een DLL wordt in-process geladen, dus het draait allemaal in hetzelfde programma. Ik weet niet zeker of het gaat werken met multithreaded dlls, maar voor zover ik weet snapt VB die toch niet in een DLL, alleen in een activex exe.
Zal nog niet gestandaardiseerd ontwikkeld zijn nee, maar tis ook maar een kleine moeite hoor zolang je in-process blijft: 1 callback functie van 5 regels en 1 functiecall. Ff doorlezen over SetWindowsHookEx dus
Pagina: 1