标签:
用户界面线程实现的技巧
1.问题阐述
MFC中有两类线程,分别称为工作者线程和用户界面线程。二者的主要区别在于工作者线程没有消息循环,而用户界面线程有自己的消息队列和消息循环。
工作者线程没有消息机制,通常用来执行后台计算和维护任务,如冗长的计算过程,打印机的后台打印等。用户界面线程一般用于处理独立于其他线程执行之外的用户输入,响应用户及系统所产生的事件和消息等。但对于Win32的API编程而言,这两种线程是没有区别的,它们都只需线程的启动地址即可启动线程来执行任务。
2.实现技巧
当一个Windows应用程序运行时,它会自动产生一个主线程,一般的窗口处理等都由该主线程处理,在主线程中可以创建和使用其他线程。用户界面线程通常用于处理用户输入并响应各种事件和消息。
启用用户界面线程的函数AfxBeginThread()与启用工作线程的函数是同一个函数的不同重载形式,该函数的声明如下:
CWinThread* AfxBeginThread( |
pParam:传递给线程函数的一个32位参数,执行函数将用某种方式解释该值。它可以是数值,或指向一个结构的指针,甚至可以被忽略。
?
nPriority:线程的优先级。如果为0,则线程与其父线程具有相同的优先级。
?
nStackSize:线程为自己分配堆栈的大小,其单位为字节。如果nStackSize被设为0,则线程的堆栈被设置成与父线程堆栈大小相同。
?
dwCreateFlags:如果为0,则线程在创建后立刻开始执行;如果为CREATE_ SUSPEND,则线程在创建后立刻被挂起。
?
lpSecurityAttrs:线程的安全属性指针,一般为NULL。
3.实例代码
BOOL CMyThread::InitInstance() |
4.小结
在Visual C++ 6.0编程环境中,我们既可以编写C风格的32位Win32应用程序,也可以利用MFC类库编写C++风格的应用程序,二者各有其优缺点。基于Win32的应用程序执行代码小巧,运行效率高,但要求程序员编写的代码较多,且需要管理系统提供给程序所有资源;而基于MFC类库的应用程序可以快速建立起应用程序,类库为程序员提供了大量的封装类,而且Developer Studio为程序员提供了一些工具来管理用户源程序,其缺点是类库代码很庞大。由于使用类库所带来的快速、简捷和功能强大等优越性,因此除非有特殊的需要,否则Visual C++推荐使用MFC类库进行程序开发。
http://blog.csdn.net/lizheng308/article/details/6195438
标签:
原文地址:http://www.cnblogs.com/findumars/p/5086784.html