VC/MFC 通過結構體傳遞參數給線程

通過結構體傳遞參數給線程


原文鏈接:http://fdyang.iteye.com/blog/1729251

目的:在一個對話框中,點擊按鈕啓動多個線程調用外部的程序(批處理) ,獲取返回值後,將結果依次更新到多個Edit控件

思路 : 通過包含控件信息的一個結構體傳遞參數給線程,在線程函數中控制控件的數據更新。

步驟 :


1.在對話框類的頭文件XXXDlg.h中建立一個結構體, 包括指向控件的指針。

struct threadInfo{
 CEdit *pEdit1_1;
}
接着,申明線程函數

UINT ThreadFunc(LPVOID lpParam);


注意,以上二者應在類CXXXDlg的外部。

PS:  static DWORD ThreadB1(LPVOID lpParam); //前面加上static就可以放到CXXXDlg類裏面,作爲該Dlg類的成員函數了。


2. 在XXXDlg.cpp文件中定義公共變量: (全局變量 )

threadInfo mThreadInfo;


3. 在按鈕的消息處理函數中,創建線程,調用線程函數。

//(1)設置threadInfo的實例的值.
mThreadInfo.pEdit1_1=&edit1_1;   //指向edit控件

//(2)啓動一個線程
CWinThread *pThread=AfxBeginThread(
 threadFunc,
 &mThreadInfo,
 THREAD_PRIORITY_NORMAL,
 0,
 CREATE_SUSPENDED
);
pThread->ResumeThread();

//(3)在類外部添加線程處理函數
UINT ThreadFunc(LPVOID lpParam)
{
 threadInfo *pInfo=(threadInfo*)lpParam;     //指向結構體的實例。
 //調用批處理處理函數,並且將返回的結果(CString)顯示到edit 控件中。
 pInfo->pEdit1_1->SetWindowText(doCheck(batFilePath));
 return 0;
}








發佈了47 篇原創文章 · 獲贊 17 · 訪問量 14萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章