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


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

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

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

步驟 :

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

struct threadInfo{
 CEdit *pEdit1_1;
}


接着,申明線程函數:

UINT ThreadFunc(LPVOID lpParam);

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


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;
}


 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM