fraki Creative Commons License 2006.05.11 0 0 53
Sziasztok!

A segítségeteket kérném egy programozási kérdésben.

MS VC++ 6.0

Nem értek igazán a C++-hoz, Delphis vagyok (abban elég jó), a Windows API-hoz is konyítok.

Meg szeretném patchelni egy kicsit a VirtualDubMod nevű videószerkesztőt. A program open source, s annyi a hiányossága, hogy a SPACE gombbal ugyan el lehet indítani a videó preview-t, de leállítani már nem (csak egérrel).

Ennek viszonylag komplex oka van, nincs kész az accelerator-tábla, s a fejlesztőknek láthatóan nincs a TODO listáján a probléma. De sokakat zavar, s én nekiálltam leszedni a forrást.

Odáig eljutottam, hogy sikerült fordítanom, s be is raktam az egyik megfelelő WindowProc-ba egy üzenet-case-t:

case WM_KEYDOWN:
if ((int)wParam == 32) AbortOperation();
break;

Fordítottam, szuperül működik. Viszont. Ha a program ablakában az alsó progressbar-on fókusz van, akkor a fenti részre nem ugrik rá a vezérlés. Azaz a WindowProc-ban csak akkor tudom elcsípni a WM_KEYDOWN üzenetet, ha az ablakban semmi sincs fókuszban. Ha egy vezérlőn már fókusz van, akkor már nem (mert gondolom az üzenet továbbítódik a vezérlőelemnek).

Erre a problémára a weben "capture messages at application level" kulcsszavak alatt egy csomó megoldás van Delphire; C++-ra vagy Windows API-ra viszont nem találtam (lehet, rosszul kerestem).

Tanácsok?

Köszi.
fraki