我刚开始学习MFC,我正在编写一个基于对话框的应用程序,以便更好地理解多线程.
主对话框有一个进度条,一个开始按钮和一个取消按钮.
单击开始按钮,我正在创建一个工作线程来进行一些处理(通过API调用),主线程负责进度条.
我已经定义了几个Windows消息来更新并停止进度条状态
WM_UPDATE_CONTROL
WM_STOP_CONTROL
Run Code Online (Sandbox Code Playgroud)
下面是我到目前为止创建的代码
HWND* phObjectHandle;
CWinThread* thread;
void CprogCtrlDlg::OnBnClickedStart() {
phObjectHandle = new HWND; // Set object handle for Worker thread
*phObjectHandle = GetSafeHwnd();
// create worker thread
if(NULL == (thread = AfxBeginThread(ThreadFunc, phObjectHandle))) {
EndDialog(IDCANCEL);
}
AfxMessageBox(L"Thread started");
// Set Progress bar to marquee
}
void CprogCtrlDlg::OnBnClickedCancel() {
// kill the Worker thread
}
UINT CprogCtrlDlg::ThreadFunc(LPVOID pParam) {
HWND *pObjectHandle = static_cast<HWND *>(pParam);
CprogCtrlImpDlg* threadDlg = (CprogCtrlImpDlg*) pParam;
return threadDlg->ThreadFuncRun(pObjectHandle);
}
UINT CprogCtrlDlg::ThreadFuncRun(HWND* pObjectHandle) { …
Run Code Online (Sandbox Code Playgroud)