windows中沒有多程序的概念,只有多執行緒。
在mfc中一般使用afxbeginthread來啟動工作者執行緒,用新建類,然後new這個類後呼叫createthread方法來啟動介面執行緒。
工作者執行緒和介面執行緒的區別是:介面執行緒比工作者執行緒多乙個可接收windows訊息的功能,也就是說,我們可以給介面執行緒傳送自定義訊息,讓介面執行緒響應。
來乙份工作者執行緒的**樣例:
// 定義工作者執行緒函式
uint threadscansockets
(lpvoid pparam)
}// 呼叫方法:
afxbeginthread
(threadscansockets,
null
);
介面執行緒的建立相對複雜,步驟如下:
1、點選單的檢視–建立類嚮導,add class… – new…。
2、填寫類名稱,如cmythread,base class選擇cwinthread,點ok按鈕(我這裡提示無法開啟mythread.h,其實已經建立成功了,關閉視窗就行了,這個是vc的bug):
3、注意首先把頭檔案裡的建構函式、析構函式改為public型別。定義乙個自定義的使用者訊息,因為這個類主要是要響應一些訊息做一些事情(wm_user+n), n >= 0:
#define wm_msg_fireuimsg (wm_user+11)
// 使用者自定義訊息
4、註冊訊息函式,如下所示(注意你只需要新增on_thread_message到這個位置即可,其它**vc已經自動生成了):
begin_message_map
(cmythreadmsg, cwinthread)
//}afx_msg_map
end_message_map
()
5、剩下的懂c++程式設計的同學就都懂了,在.**件裡增加:
afx_msg void
fireuiwork
(wparam wpparam, lparam lpparam)
;// 訊息處理函式
然後實現它!
void cmythreadmsg::
fireuiwork
(wparam wpparam, lparam lpparam)
6、建立執行緒並執行:
// 定義全域性變數
cfireuithreadmsg *g_pthread =
null
;// 其它**.......
g_pthread =
newcfireuithreadmsg()
;g_pthread -
>
createthread()
;
7、給該執行緒傳送訊息:
介面某個位置建立乙個按鈕,在按鈕響應函式裡增加下面的**:
g_pthread->postthreadmessage(wm_msg_fireuimsg, 100, 200);
除錯程式看看效果吧。
VC 6 0MFC執行的簡單流程
背景 正文 首先,本次工程檔名為 gpiotest 按照mfc嚮導一路往下,使用dialog base視窗,結果會生成三個分類資料夾 source files head files resource files 具體存放什麼就不用說了。其中會生成三個 cpp 檔案,gpiotest.cpp gpio...
VC 6 0 MFC除錯技巧
vc的除錯真的很讓人頭大,特別是用過eclipse這種idea後猛的一下接觸vc編譯器的人,沒辦法有的時候那些用vc開發的歷史遺留問題還是要解決,mfc視窗程式除錯起來沒有了控制台的輸出找起bug來也是真讓人頭疼不已。好在網上考到了vc編譯器中 工具 mfc tracer,我們進行debug的時候就...
VC 6 0 MFC顯示模態對話方塊和非模態對話方塊
include adddatadlg.h 新增標頭檔案 cadddatadlg adddata dialog 在標頭檔案中定義對話方塊物件 cadddatadlg為該對話方塊對應的類 int nreturn adddata dialog.domodal 在原始檔函式中顯示模態對話方塊,將返回值賦給n...