MFC創建用戶界面線程

主要步驟概括:

1、使用類嚮導創建CWinThread的派生類(以CUIThread類爲例)。

2、使用類嚮導創建CDialog的派生類(以CUIThreadDlg類爲例)。

3、在CUIThread類的頭文件中,添加CUIThreadDlg類變量m_dlg。

4、利用m_dlg新建對話框窗口和關閉對話框窗口來重載CUIThread的InitInstance()和ExitInstance()。

5、對CUIThreadDlg類,對應的對話框資源,進行功能設計。(如重載OnLButtonDown())。

下面以一個簡單例子詳細介紹如何實現界面線程:

1、建立一個對話框工程MultiThread,在對話框中加入一個按鈕IDC_UI_THREAD,標題爲“用戶界面線程”。

2、利用類嚮導爲工程添加一個新類CUIThread,基類爲CWinThread。

3、在資源視圖裏面插入一個對話框,ID爲IDD_UITHREADDLG,標題爲“線程對話框”。

4、爲該對話框創建一個基於CDialog類的CUIThreadDlg。該步驟還是利用類嚮導,點擊添加類,選擇基類CDialog,輸入前面的類名,在ID框中選擇剛纔插入的那個對話框ID。

5、到此爲止我們已經建立了一個對話框工程,新建了一個線程類,一個對話框,併爲此對話框建立了一個對話框類。現在需要將該對話框和線程類關聯起來。在CUIThread類的頭文件裏面將對話框類CUIThreadDlg.h包含進來。並添加protected型成員變量CUIThreadDlg  m_dlg。這樣便在線程類裏面創建了對話框類對象,可以利用該對象去重載InitInstance()和Exitinstance()。

BOOL CUIThread::InitInstance()

{

m_dlg.Create(IDD_UITHREADDLG);//創建此ID號的對話框窗口

m_dlg.ShowWindow(SW_SHOW);//顯示窗口

m_pMainWnd=&m_dlg;//獲取對話框窗口指針

return TRUE;

}

int CUIThread::ExitInstance()

{

m_dlg.DestoryWindow();//銷燬窗口

return CWinThread::ExitInstance();

}

以上重載函數內容顯而易見,就是在線程類裏面關聯起之前建立的對話框,有開始,也有結束。

6、接下來我們只需要在主對話框中開啓這個界面線程就好了,雙擊按鈕IDC_UI_THREAD,添加消息響應函數,在函數裏面只需一句話開啓界面線程就可以了

CWinThread*  pThread=AfxBeginThread(RUNTIME_CLASS(CUIThread));

當然,既然用到了這個線程類,那麼就得把它的頭文件包含進來#include "UIThread.h"。這樣一個簡單的用戶界面線程就做好了。編譯運行整個工程,就可以在主對話框裏面點擊按鈕開啓這個界面線程。

7、進一步我們便可以對這個界面線程產生的對話框進行功能設計了,比如添加一個進度條,或者添加一個消息響應,也可以在裏面開啓其他的工作線程等。拿最簡單的添加一個消息響應來說,利用類嚮導選中項目裏面的UIThreadDlg類,選中一個消息例如WM_LBUTTONDOWN,點擊添加處理函數,或者雙擊就好。然後在裏面添加代碼即可。例如彈出一個提示框AfxMessageBox(“You clicked zhe left button!!!”)等。












發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章