初识windows编程之多线程
2013-11-07 23:46
381 查看
本文是本人看了视频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.总结线程是一个很重要的概念,我也只是初步接触了线程,对此知之甚少,如果有什么说的不对的地方希望大家指出。
相关文章推荐
- 从头开始学Java--第一课
- 从头开始学Java--第一课
- 从头开始学Java--第一课
- 从头开始学Java--第一课
- 从头开始学Java--第一课
- 从头开始学Java--第一课
- 从头开始学Java--第一课
- 从头开始学Java--第一课
- 从头开始学Java--第一课
- 从头开始学Java--第一课
- 从头开始学Java--第一课
- 从头开始学Java--第一课
- 从头开始学Java--第一课
- 从头开始学Java--第一课
- 从头开始学Java--第一课
- 从头开始学Java--第一课
- 从头开始学Java--第一课
- 快速排序置随机数代码实现
- c++中的数据类型 运算符 和 表达式[c++ 基础(一)]
- python自然语言处理工具NLTK各个包的意思和作用总结