Sdílet prostřednictvím


Podtřídy a automatický překlad zpráv

Podtřídění je technika, která umožňuje aplikaci zachytit a zpracovávat zprávy odeslané nebo publikované do určitého okna, ještě než má procedura okna možnost je zpracovat. Operační systém automaticky konvertuje zprávy do znakové stránky Windows (ANSI) nebo formátu Unicode v závislosti na formě funkce, která podtřídí proceduru okna.

Následující volání funkce SetWindowLongA podtřízuje aktuální proceduru okna přidruženou k oknu identifikovanému parametrem hWnd. Alternativně může aplikace použít SetWindowLongPtrA. Nová procedura okna NewWndProcobdrží zprávy s textem ve formátu znakové stránky Windows.

OldWndProc = (WNDPROC) SetWindowLongA(hWnd,
             GWL_WNDPROC, (LONG)NewWndProc); 

Když NewWndProc dokončí zpracování zprávy, použije funkci CallWindowProc následujícím způsobem předat zprávu OldWndProc.

CallWindowProc(OldWndProc, hWnd, uMessage, wParam, lParam);

Pokud byl OldWndProc vytvořen s použitím stylu třídy UNICODE, zprávy jsou přeloženy z kódové stránky Windows přijaté NewWndProc do Unicode.

Podobně volání funkce SetWindowLongW nebo SetWindowLongPtrW nahrazuje aktuální proceduru okna novou procedurou, která očekává textové zprávy v Unicode. Překlad zpráv se v případě potřeby provádí během zpracování funkce CallWindowProc.

Další informace o podtřídění naleznete v tématu Okenní procedury.

Použití Unicode a znakových sad