Prihláste sa s kontom Microsoft
Prihláste sa alebo si vytvorte konto.
Dobrý deň,
Vyberte iné konto.
Máte viacero kont
Vyberte konto, s ktorým sa chcete prihlásiť.

Príznaky

Rekurzívny volania na okno Správca funkcie vyváža User32. DLL môže vrátiť bez registrácie Požadovaná operácia a bez nastavenia kód chyby. To sa zvyčajne vyskytuje v aplikáciách s hlboko vnorené okno hierarchie. Medzi príznaky môžu vyskytnúť:

  • Aplikácie s hlboko vnorené okno hierarchie zlyhať správne veľkosť podriadené okná, keď rám okna. Systém Windows sa presunú alebo veľkosť volaním MoveWindow, SetWindowPos alebo DeferWindowPos.

  • Správy nie sú obsiahnuté v nadradenej windows alebo Windows dieťa, ako sa očakáva. DefWindowProc môže úspešne nerozšíria správy parent window alebo podriadené okná okna prijíma správu.

  • Okno správy oknom volanie SendMessage, SendMessageTimeout alebo SendMessageCallback neprijíma zadané okno.

Aplikácie, ktoré inak pracovať normálne môže tiež prejaviť príznaky popísané vyššie, ak WH_CALLWNDPROC alebo WH_CALLWNDPROCRET okno háčiky sú nastavené na vlákna v žiadosti, že vlastné okná. Okno zavesenie môžete nastaviť na špecifické vlákno alebo na všetky UI vlákna volaním funkcie SetWindowsHookEx.

Príčina

Toto správanie je výsledkom Windows schopná dosiahnuť jadra zásobníka volajúceho vlákno na vykonanie požadovanej operácie. Kvôli dodatočné jadra zásobníka manipulovanie potrebné x64 prostredie systému Windows jadra zásobníka môže spotrebovať rýchlejšie ako v x x86 prostredí Windows keď tvorby rekurzívny zavolá na okno Správca funkcie exportované User32. DLL. Hoci príznaky popísané v tomto článku sa častejšie vyskytujú v x64 platformy Windows, je možné za rekurzívny spotrebovať vlákno zásobníku jadra x86 platformy Windows.

Riešenie

Tieto riešenia možno vyriešiť tento problém

  1. Veľkosť podriadené okná pri spracovaní WM_WINDOWPOSCHANGED okno správy namiesto prechádzajú správu na DefWindowProc.

  2. Asynchrónne veľkosť podriadené okná pri parent window je veľkosť namiesto o veľkosti podriadené okná pri spracovaní WM_WINDOWPOSCHANGED alebo WM_SIZE okno správy.

  3. Redesign aplikácie UI znížiť rozlíšenie vnorené okno.

Ďalšie informácie

Časti Podsystém Win32 implementujú v ovládač režimu jadra (WIN32K. SYS). Volania funkcie exportované User32. DLL zmeniť stav okno, vrátane jej veľkosť a umiestnenie, budú hovor do WIN32K. SYS na vykonanie požadovanej operácie. Funkcie, ktoré zmeniť stav okno zvyčajne za následok okno správ do okna budú upravené, kde WIN32K. SYS robí používateľskom režime bublinu volať postupu okno okna sa mení. Napríklad, WIN32K. SYS pošle okna Správa WM_WINDOWPOSCHANGING a WM_WINDOWPOSCHANGED okno správy pri veľkosti alebo umiestnenia okna sú volaním funkcie SetWindowPos. DefWindowProc odošle zadané okno WM_SIZE správu pri volaní s WM_WINDOWPOSCHANGED správy a zmenil veľkosť okna. Aplikácie zvyčajne veľkosť podriadené okná pri parent window dostane WM_WINDOWPOSCHANGED alebo WM_SIZE okno Správa, ktorá vedie k rekurzívne volanie do WIN32K. SYS pre hlboko vnorené okno hierarchie. Aplikácie, ktoré inak pracovať normálne môže prejaviť príznaky popísané v tomto článku pri WH_CALLWNDPROC alebo WH_CALLWNDPROCRET háčiky sú nastavené na vlákna v procese. Je to kvôli priestor zásobníka dodatočné jadra, ktorý je spotreby pri WIN32K. SYS spracováva volá háku postupy. Volanie SendMessage neodoslať okno okno vlastníctve volajúceho vlákno zvyčajne volať postupu okno okna hlásenie bez nutnosti hovor do WIN32K. SYS. Však SendMessage budú hovor do WIN32K. SYS li WH_CALLWNDPROC háčikov alebo WH_CALLWNDPROCRET háčiky súbor volá vlákno ako WIN32K. SYS spravuje zavesenie a popisovačov volá háku postupy. Ako je uvedené vyššie, DefWindowProc odošle zadané okno WM_SIZE správu pri volaní s WM_WINDOWPOSCHANGED správy a zmenil veľkosť okna. Pripojiť WH_CALLWNDPROC alebo WH_CALLWNDPROCRET spôsobí volanie SendMessage DefWindowProc robí na prechod do režimu jadra na volanie háku postupy. Veľkosti podriadené okná pri manipulácii s WM_WINDOWPOSCHANGED okno správy namiesto WM_SIZE okno správy zníži jadra zásobník použitie odstránením potreby SendMessage pre prechod do režimu jadra v poradí volať háku postupy. Vývojárov Windows Forms aplikácií, ktoré sa vyskytne tento problém by mal byť KB článok 953934ďalšie informácie.

Potrebujete ďalšiu pomoc?

Chcete ďalšie možnosti?

Môžete preskúmať výhody predplatného, prehľadávať školiace kurzy, naučiť sa zabezpečiť svoje zariadenie a ešte oveľa viac.

Komunity pomôžu s kladením otázok a odpovedaním na ne, s poskytovaním pripomienok a so získavaním informácií od odborníkov s bohatými znalosťami.

Boli tieto informácie užitočné?

Aká je podľa vás jazyková kvalita textu?
Čo sa vám páčilo, prípadne čo nie?
Stlačením tlačidla Odoslať sa vaše pripomienky použijú na zlepšenie produktov a služieb spoločnosti Microsoft. Váš správca IT bude môcť tieto údaje zhromažďovať. Vyhlásenie o ochrane osobných údajov.

Ďakujeme za vaše pripomienky!

×