最近由於專案需要,要在vc環境下做乙個啟動介面。當時拿到這個任務我想的是直接afxbeginthread一下就行了,後來發現沒這麼簡單。要解決這個問題首先需要了解以下知識點。
一 mfc將執行緒分為工作執行緒和使用者介面執行緒。聽名字就應該知道他們的區別在於用途不同,使用者介面是用來建立介面並負責和使用者互動的而工作執行緒則是負責處理後台的計算。從技術上講,使用者介面執行緒具有訊息迴圈能處理訊息,而工作執行緒則不行。
二 執行緒直接的資訊互動可以通過postthreadmessage來解決。
那麼如何建立使用者介面執行緒呢?
1 首先建立你自己的對話方塊類。
2 建立使用者介面執行緒類,注意這個類必須繼承自cwinthread類,同時以對話方塊類為成員變數。
3 用以下語句建立執行緒:
cwinthread *pthread = afxbeginthread(runtime_class(使用者介面執行緒類名));
4 重寫函式initinstance,在裡面建立對話方塊類。
bool csplashthread::initinstance()
5 用以下語句傳送訊息給使用者介面執行緒。
::postthreadmessage(pthread->m_nthreadid,wm_splash_notify,0,0);
其宣告如下:
bool postthreadmessage
(
dword idthread, // thread identifier
uint msg, // message to post
wparam wparam, // first message parameter
lparam lparam // second message parameter
);
6 在使用者介面執行緒類中過載pretranslatemessage函式:
bool使用者介面執行緒類名::pretranslatemessage(msg* pmsg)
return cwinthread::pretranslatemessage(pmsg); }
以上便是使用者介面執行緒的建立的整個過程。
vc 程式啟動畫面
使用啟動畫面一是可以減少等待程式載入過程中的枯燥感 尤其是一些大型程式 二是可以用來顯示軟體名稱和版權等提示資訊。怎樣使用vc 製作應用程式的啟動畫面呢?本文提供四種方法,前三種適用於基於文件的應用程式,第四種適用於基於對話方塊的應用程式。1.利用元件庫中的splash screen元件實現 開啟v...
用VC製作應用程式啟動畫面
使用啟動畫面一是可以減少等待程式載入過程中的枯燥感 尤其是一些大型程式 二是 可以用來顯示軟體名稱和版權等提示資訊。怎樣使用vc 製作應用程式的啟動畫面呢?本文提供四種方法。前三種適用於基於文件的應用程式,第四種適用於基於對話方塊的應用程 序。1.利用元件庫中的splash screen元件實現 1...
程式啟動畫面
vc選單欄的 工程 增加到工程 components and controls.單擊 insert 後會顯示確認對話方塊,點選 確認 後,會顯示插入資訊 class name 插入的啟動畫面視窗類的名稱 bitmap resource id 使用的點陣圖資源id 單擊 ok 按鈕後返回compone...