01
2014
04

c++中多线程的简单使用

code:

#include "stdafx.h"
#include <windows.h>
#include <windowsx.h>
#include "resource.h"
#include "MainDlg.h"
BOOL isCancel=FALSE;
HWND hwnd1;
BOOL WINAPI Main_Proc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    switch(uMsg)
    {
        HANDLE_MSG(hWnd, WM_INITDIALOG, Main_OnInitDialog);
        HANDLE_MSG(hWnd, WM_COMMAND, Main_OnCommand);
HANDLE_MSG(hWnd,WM_CLOSE, Main_OnClose);
    }
    return FALSE;
}
BOOL Main_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam)
{
hwnd1=hwnd;
    return TRUE;
}
DWORD WINAPI ThreadFun(LPVOID Lpparam)//要运行的耗时操作,如果要用 Lpparam 需要显式转换
{
SetDlgItemText(hwnd1,IDC_EDIT1,"正在连接服务器…");
Sleep(4000);
if(isCancel==TRUE)
{
SetDlgItemText(hwnd1,IDC_EDIT1,"登陆已取消!");
return -1;
}
SetDlgItemText(hwnd1,IDC_EDIT1,"正在验证密码…");
Sleep(4000);
if(isCancel==TRUE)
{
SetDlgItemText(hwnd1,IDC_EDIT1,"登陆已取消!");
return -1;
}
SetDlgItemText(hwnd1,IDC_EDIT1,"验证通过!");
return 0;
}
void Main_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify)
{
    switch(id)
    {
        case IDC_OK:
{
isCancel=FALSE;
CreateThread(NULL,0,ThreadFun,0,0,0);//新的线程运行函数,第4个参数可以给函数传参数值
}
        break;
case IDC_btnCancel:
{
isCancel=TRUE;
}
break;;
        default:
break;
    }
}
void Main_OnClose(HWND hwnd)
{
    EndDialog(hwnd, 0);
}




版权声明:
作者:真爱无限 出处:http://www.pukuimin.top 本文为博主原创文章版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接.
« 上一篇下一篇 »

相关文章:

评论列表:

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。