建立使用者介面執行緒
本人節選自《21天學通c++》一書
說明:**中使用了declare_dyncreate巨集,使用該巨集表明mythread類具有動態建立的能力。使用declare_message_map巨集表明具有訊息對映,可以處理命令訊息。
再開啟mythread類的實現檔案(mythread.cpp)。下面列出其中一部分**。
// mythread
implement_dyncreate(mythread, cwinthread)
mythread::mythread()
……begin_message_map(mythread, cwinthread)
end_message_map()
警告:因為在檢視類cmyview中用到了新建的執行緒類mythread。因此,最後不要忘記在cmyview類中包含mythread類的標頭檔案。具體**如下:
#include "mythread.h"
【執行結果】在visual c++ 6.0中編譯後無錯誤,使用快捷鍵【ctrl+f5】執行該工程。
【**解析】在上述**中,第4行首先構造了乙個框架視窗物件。然後在第5~10行呼叫其成員函式createex來產生視窗。最後將視窗顯示出來。如果使用者介面執行緒正常執行時,就會產生乙個標題為「使用者介面執行緒示例」的視窗。讀者可以發現,新建的使用者介面執行緒視窗顯示在螢幕上。
說明:需要讀者了解的是,這個執行緒視窗不屬於建立執行緒程式的主框架視窗,而是和主框架視窗(也可以說是主線程視窗)並列的。兩者的父視窗都是系統的桌面。檢視桌面底部的windows系統工作列就會發現,除了建立執行緒應用程式視窗,也有單獨的使用者介面執行緒視窗。
此時,這兩個視窗可以並行工作,互不影響。使用者可以單獨關閉子視窗使用者介面執行緒視窗,就相當於正常退出了該子執行緒視窗,不會對主線程建立程序視窗造成影響。反過來,如果使用者關閉主線程視窗,則使用者介面執行緒視窗也會被迫關閉。這種情況屬於使用者介面執行緒非正常退出,會造成記憶體洩漏。
使用者介面執行緒AfxBeginThread的使用
使用者介面執行緒在執行時會有乙個視窗介面和與其相對應的視窗函式,所以它可以通過響應訊息來和使用者進行互動。afxbeginthread 函式原型如下 cwinthread afxbeginthread cruntimeclass pthreadclass,從cwinthread派生的runtime ...
使用者介面執行緒AfxBeginThread的使用
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!使用者介面執行緒在執行時會有乙個視窗介面和與其相對應的視窗函式,所以它可以通過響應訊息來和使用者進行互動。afxbeginthread函式原型如下 cwinthread afxbeginthread cruntimeclass pthreadcla...
使用者介面執行緒AfxBeginThread的使用
使用者介面執行緒在執行時會有乙個視窗介面和與其相對應的視窗函式,所以它可以通過響應訊息來和使用者進行互動。afxbeginthread cwinthread afxbeginthread cruntimeclass pthreadclass,從cwinthread派生的runtime class類 ...