初识windows编程之多线程

本文是本人看了视频C语言也能干大事第20节之后所写的总结,链接:点击打开链接
1.要说多线程就一定会牵扯到这个东西Sleep()函数,睡眠函数,此函数的参数为毫秒,通过这个函数,可以让一个操作在另一个操作执行过后再过特定的时间执行;
2.接着我们讲一讲线程的创建,
我所理解的线程是这样的,有一个主线程,其他线程是并发的,和主线程是同时进行的,当访问的是不同的对象时,线程之间互不影响;当访问的是同一个对象时,线程之间会相互影响,一旦主线程结束,其他线程也会结束;
DWORD WINAPI myfunc1(LPVOID lpParam){ } 这是回调函数
CreateThread(NULL,0,myfunc1,0,0,0);这是创建线程的函数,第四个参数可以用来传句柄;
下面展示一个具体的例子:
#include "stdafx.h"
#include <windows.h>
#include <windowsx.h>
#include "Resource.h"
#include "MainDlg.h"

BOOL isCancel = FALSE;

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)
{
    return TRUE;
}

DWORD WINAPI myfunc1(LPVOID lpParam)
{
HWND hwnd = (HWND)lpParam;
isCancel = FALSE;
SetDlgItemText(hwnd,IDC_EDITSTATUS,TEXT("连接QQ服务器 "));
Sleep(5000);
if(TRUE == isCancel)
{
SetDlgItemText(hwnd,IDC_EDITSTATUS,TEXT("登陆取消 "));
return 0;
}
SetDlgItemText(hwnd,IDC_EDITSTATUS,TEXT("正在验证密码 "));
Sleep(5000);
if(TRUE == isCancel)
{
return 0;
}
SetDlgItemText(hwnd,IDC_EDITSTATUS,TEXT("验证通过 "));
return 0;
}

void Main_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify)
{
    switch(id)
    {
        case IDC_OK:
{
CreateThread(NULL,0,myfunc1,hwnd,0,0);
//MessageBox(hwnd,TEXT("CreateThread 完成"),TEXT("完成"),MB_OK);
}
        break;
case IDC_BTNCANCELLOGON:
{
isCancel = TRUE;
}
break;
        default:
break;
    }
}

void Main_OnClose(HWND hwnd)
{
    EndDialog(hwnd, 0);
}

3.总结线程是一个很重要的概念,我也只是初步接触了线程,对此知之甚少,如果有什么说的不对的地方希望大家指出。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值