Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A felhasználói felületi szálakat gyakran használják a felhasználói bemenetek kezelésére és a felhasználói eseményekre való reagálásra az alkalmazás más részeit végrehajtó szálaktól függetlenül. A fő alkalmazásszálat (amely a CWinApp-származtatott osztályban van megadva) már létrehoztuk és elindítottuk az Ön számára. Ez a témakör a további felhasználói felületi szálak létrehozásához szükséges lépéseket ismerteti.
A felhasználói felületi szál létrehozásakor először a CWinThread osztályát kell származtatnia. Ezt az osztályt deklarálnia és implementálnia kell a DECLARE_DYNCREATE és IMPLEMENT_DYNCREATE makrók használatával. Ennek az osztálynak felül kell írnia néhány függvényt, és felülírhat másokat. Ezeket a függvényeket és a teendőket az alábbi táblázatban mutatjuk be.
Felülbírálandó függvények User-Interface szál létrehozásakor
| Funkció | Cél |
|---|---|
| ExitInstance | A szál leállásakor végezze el a törlést. Általában felülírják. |
| InitInstance | Hajtsd végre a szálpéldány inicializálását. Felül kell bírálni. |
| OnIdle | Szálspecifikus üresjárati feldolgozás végrehajtása. Általában nem írják felül. |
| PreTranslateMessage | Szűrje meg az üzeneteket, mielőtt azokat a TranslateMessage és DispatchMessage címzettekhez továbbítja. Általában nem írják felül. |
| ProcessWndProcException | A szál üzenet- és parancskezelői által okozott kezeletlen kivételek elfogása. Általában nem írják felül. |
| Fut | A szál vezérlési függvénye. Tartalmazza az üzenet pumpát. Ritkán felülbírálva. |
Az MFC a paraméterek túlterhelésével két verziót biztosít AfxBeginThread: az egyiket, amely csak munkaszálakat hozhat létre, a másik pedig felhasználói felületi szálakat vagy munkaszálakat hozhat létre. A felhasználói felületi szál elindításához hívja meg az AfxBeginThread második túlterhelését, és adja meg a következő információkat:
A származtatott osztály
CWinThreadRUNTIME_CLASS.(Nem kötelező) A kívánt prioritási szint. Az alapértelmezett érték a normál prioritás. Az elérhető prioritási szintekről további információt a Windows SDK SetThreadPriority szolgáltatásában talál.
(Nem kötelező) A szál kívánt veremmérete. Az alapértelmezett érték ugyanaz a méretverem, mint a létrehozási szál.
(Nem kötelező) CREATE_SUSPENDED, ha azt szeretné, hogy a szál felfüggesztett állapotban legyen létrehozva. Az alapértelmezett érték 0, vagy a szálat normál módon indítja el.
(Nem kötelező) A kívánt biztonsági attribútumok. Az alapértelmezett hozzáférés megegyezik a szülőszáléval. A biztonsági információk formátumáról további információt a Windows SDK SECURITY_ATTRIBUTES című témakörben talál.
AfxBeginThread elvégzi helyetted a munka nagy részét. Létrehoz egy új objektumot az osztályból, inicializálja a megadott információkkal, és meghívja a CWinThread::CreateThread parancsot a szál végrehajtásának megkezdéséhez. Az eljárás során ellenőrzik, hogy az összes objektum megfelelően van-e felszabadítva, ha a létrehozás bármely része sikertelen.