小编Maj*_*ory的帖子

从父线程终止Worker线程 - MFC

我刚开始学习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)

mfc multithreading worker-thread visual-c++

4
推荐指数
1
解决办法
3305
查看次数

标签 统计

mfc ×1

multithreading ×1

visual-c++ ×1

worker-thread ×1