Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Vlákno uživatelského rozhraní se běžně používá ke zpracování uživatelského vstupu a odpovídání na uživatelské události nezávisle na vláknech, která spouští další části aplikace. Hlavní vlákno aplikace (zadané ve vaší CWinApp-odvozené třídě) je již vytvořeno a spuštěno za vás. Toto téma popisuje kroky potřebné k vytvoření dalších vláken uživatelského rozhraní.
První věc, kterou musíte udělat při vytváření vlákna uživatelského rozhraní, je odvozena třída z CWinThread. Musíte deklarovat a implementovat tuto třídu pomocí DECLARE_DYNCREATE a IMPLEMENT_DYNCREATE maker. Tato třída musí přepsat některé funkce a může přepsat jiné. Tyto funkce a jejich akce by měly být uvedeny v následující tabulce.
Funkce, které se mají přepsat při vytváření vlákna uživatelského rozhraní
| Funkce | Účel |
|---|---|
| ExitInstance | Vyčištění proveďte při ukončení vlákna. Obvykle se přepsaly. |
| InitInstance | Proveďte inicializaci instance vlákna. Musí se přepsat. |
| OnIdle | Proveďte zpracování doby nečinnosti specifické pro vlákno. Obvykle není přepsáno. |
| PreTranslateMessage | Filtrování zpráv před jejich odesláním do TranslateMessage a DispatchMessage. Obvykle není přepsáno. |
| ProcessWndProcException | Zachycení neošetřených výjimek vyvolaných zprávou vlákna a obslužnými rutinami příkazů Obvykle není přepsáno. |
| Běžet | Řídicí funkce pro vlákno. Obsahuje čerpadlo zpráv. Zřídka přepsaný. |
Knihovna MFC poskytuje dvě verze funkce AfxBeginThread prostřednictvím přetížení parametru: jednu, která může pouze vytvořit pracovní vlákna, a jednu, která může vytvářet vlákna uživatelského rozhraní nebo pracovní vlákna. Chcete-li spustit vlákno uživatelského rozhraní, zavolejte druhé přetížení AfxBeginThread, které poskytuje následující informace:
RUNTIME_CLASS třídy, kterou jste odvozli z
CWinThread.(Volitelné) Požadovaná úroveň priority. Výchozí hodnota je normální priorita. Další informace o dostupných úrovních priority naleznete v tématu SetThreadPriority v sadě Windows SDK.
(Volitelné) Požadovaná velikost zásobníku pro vlákno. Výchozí hodnota je stejná velikost zásobníku jako při vytváření vlákna.
(Volitelné) CREATE_SUSPENDED, pokud chcete, aby se vlákno vytvořilo v pozastaveném stavu. Výchozí hodnota je 0 nebo normálně spusťte vlákno.
(Volitelné) Požadované atributy zabezpečení. Výchozí hodnota je stejný přístup jako nadřazené vlákno. Další informace o formátu těchto informací o zabezpečení najdete v tématu SECURITY_ATTRIBUTES v sadě Windows SDK.
AfxBeginThread dělá většinu práce za vás. Vytvoří nový objekt vaší třídy, inicializuje ho informacemi, které zadáte, a zavolá CWinThread::CreateThread , aby se spustilo vlákno. Kontroly jsou provedeny v průběhu postupu, aby se zajistilo, že všechny objekty jsou správně uvolněny, pokud všechny části vytváření selžou.