Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
En användargränssnittstråd används ofta för att hantera användarindata och svara på användarhändelser oberoende av trådar som kör andra delar av programmet. Huvudprogramtråden (som finns i klassen CWinApp-derived) har redan skapats och startats åt dig. I det här avsnittet beskrivs de steg som krävs för att skapa ytterligare användargränssnittstrådar.
Det första du måste göra när du skapar en användargränssnittstråd är att härleda en klass från CWinThread. Du måste deklarera och implementera den här klassen med hjälp av makrona DECLARE_DYNCREATE och IMPLEMENT_DYNCREATE . Den här klassen måste åsidosätta vissa funktioner och kan åsidosätta andra. Dessa funktioner och vad de ska göra visas i följande tabell.
Funktioner att åsidosätta när du skapar en User-Interface tråd
| Funktion | Avsikt |
|---|---|
| ExitInstance | Utför rensning när tråden avslutas. Vanligtvis åsidosatt. |
| InitInstance | Utför initiering av trådinstans. Måste åsidosättas. |
| OnIdle | Utför trådspecifik processering under inaktiv tid. Vanligtvis inte överskridit. |
| PreTranslateMessage | Filtrera meddelanden innan de skickas till TranslateMessage och DispatchMessage. Vanligtvis inte överskridit. |
| ProcessWndProcException | Fånga upp ohanterade undantag som genereras av trådens meddelande- och kommandohanterare. Vanligtvis inte överskridit. |
| Springa | Styrfunktion för tråden. Innehåller meddelandepumpen. Sällan åsidosatt. |
MFC tillhandahåller två versioner av AfxBeginThread genom parameteröverlagring: en som bara kan skapa arbetstrådar och en som kan skapa UI-trådar eller arbetstrådar. Starta användargränssnittstråden genom att anropa den andra överlagringen av AfxBeginThread med följande information:
RUNTIME_CLASS för klassen som du härledde från
CWinThread.(Valfritt) Önskad prioritetsnivå. Standardvärdet är normal prioritet. Mer information om tillgängliga prioritetsnivåer finns i SetThreadPriority i Windows SDK.
(Valfritt) Önskad stackstorlek för tråden. Standardvärdet är samma storleksstack som den skapande tråden.
(Valfritt) CREATE_SUSPENDED om du vill att tråden ska skapas i ett pausat tillstånd. Standardvärdet är 0 eller starta tråden normalt.
(Valfritt) Önskade säkerhetsattribut. Standardvärdet är samma åtkomst som den överordnade tråden. Mer information om formatet för den här säkerhetsinformationen finns i SECURITY_ATTRIBUTES i Windows SDK.
AfxBeginThread gör det mesta av arbetet åt dig. Det skapar ett nytt objekt i klassen, initierar det med den information du anger och anropar CWinThread::CreateThread för att börja köra tråden. Kontroller görs under hela proceduren för att se till att alla objekt frigörs korrekt ifall någon del av skapandet misslyckas.