1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > MFC使用多线程_beginthread函数控制进度条和文本控件

MFC使用多线程_beginthread函数控制进度条和文本控件

时间:2023-06-14 01:53:30

相关推荐

MFC使用多线程_beginthread函数控制进度条和文本控件

要点

1.对话框中启动新线程。把句柄做参数传递。

2.线程类中定义静态函数,也可以在对话框类中定义个全局函数。

3.线程回调函数必须是静态,且以void*为参数。

4.定义自定义消息,线程类发送,对话框类响应。

效果

代码

多线程控制类

CThread.h

#pragma once#include <process.h>#include <Windows.h>#define WM_USER_MSG WM_USER + 1001class CThread{public:// 线程回调函数必须是全局函数static void Run(void *ptr);public:CThread();~CThread();};

CThread.cpp

#include "stdafx.h"#include "CThread.h"void CThread::Run(void * ptr){HWND hWnd = (HWND)ptr;for (int i = 0; i < 100; ++i){// 发送消息到主对话框::PostMessage(hWnd, WM_USER_MSG, WPARAM(i), LPARAM(0));Sleep(10);}MessageBox(NULL, _T("完成!"),_T("完成!"),NULL);// 回归为原始值0::PostMessage(hWnd, WM_USER_MSG, WPARAM(0), LPARAM(0));_endthread();}CThread::CThread(){}CThread::~CThread(){}

消息类

// 消息映射,在类向导自定义个WM_USER_MSG消息,然后绑定OnMsg函数ON_MESSAGE(WM_USER_MSG, &CThreadProgDlg::OnMsg)// OnInitDialog 在MFC初始化函数OnInitDialog 加CProgressCtrl *prog = (CProgressCtrl *)GetDlgItem(IDC_PROGRESS1);prog->SetRange(0,100);

主对话框

// 绑定开始按钮的函数void CThreadProgDlg::OnBnClickedOk(){// TODO: 在此添加控件通知处理程序代码_beginthread(&CThread::Run,0,this->GetSafeHwnd());//CDialogEx::OnOK();}// 自定义消息处理函数LRESULT CThreadProgDlg::OnMsg( WPARAM wp,LPARAM lp ){CProgressCtrl *prog = (CProgressCtrl *)GetDlgItem(IDC_PROGRESS1);prog->SetPos((int)wp);return 1L;}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。