WEB开发网
开发学院软件开发VC 多线程编程之二——MFC中的多线程开发 阅读

多线程编程之二——MFC中的多线程开发

 2007-03-17 22:00:08 来源:WEB开发网   
核心提示: A、在UIThreadDlg.cpp的开头加入语句:#include "UIThread.h"B、把UIThread.h中类CUIThread()的构造函数的特性由 protected 改为 public,用户界面线程的执行次序与应用程序主线程相同,多线程编程之二——M

A、在UIThreadDlg.cpp的开头加入语句:#include "UIThread.h"B、把UIThread.h中类CUIThread()的构造函数的特性由 protected 改为 public。

用户界面线程的执行次序与应用程序主线程相同,首先调用用户界面线程类的InitInstance()函数,如果返回TRUE,继续调用线程的Run()函数,该函数的作用是运行一个标准的消息循环,并且当收到WM_QUIT消息后中断,在消息循环过程中,Run()函数检测到线程空闲时(没有消息),也将调用OnIdle()函数,最后Run()函数返回,MFC调用ExitInstance()函数清理资源。

你可以创建一个没有界面而有消息循环的线程,例如:你可以从CWinThread派生一个新类,在InitInstance函数中完成某项任务并返回FALSE,这表示仅执行InitInstance函数中的任务而不执行消息循环,你可以通过这种方法,完成一个工作者线程的功能。

例程6 MultiThread6

建立一个基于对话框的工程MultiThread6,在对话框IDD_MULTITHREAD6_DIALOG中加入一个按钮IDC_UI_THREAD,标题为“用户界面线程”

右击工程并选中“New Class…”为工程添加基类为CWinThread派生线程类CUIThread。

给工程添加新对话框IDD_UITHREADDLG,标题为“线程对话框”。

为对话框IDD_UITHREADDLG创建一个基于CDialog的类CUIThreadDlg。使用ClassWizard为CUIThreadDlg类添加WM_LBUTTONDOWN消息的处理函数OnLButtonDown,如下:void CUIThreadDlg::OnLButtonDown(UINT nFlags, CPoint point)
{
  AfxMessageBox("You Clicked The Left Button!");
  CDialog::OnLButtonDown(nFlags, point);
}

上一页  1 2 3 4 5 6 7  下一页

Tags:线程 编程 MFC

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接