c语言MFC程序怎么杀死线程?

        线程是进程内的执行路径。启动“记事本”时,操作系统创建进程并开始执行该进程的主线程。此线程终止时,进程也终止。启动代码以函数地址的形式将此主线程提供给操作系统。通常是所提供的 main 函数或

         如果愿意,可以在应用程序中创建其他线程。如果在处理后台任务或维护任务时不希望用户等待这些任务完成,则可能需要创建其他线程。MFC 应用程序中的所有线程都由 CWinThread 对象表示。大多数情况下,甚至不必显式创建这些对象,而只需调用框架

         MFC 区分两种类型的线程:用户界面线程和辅助线程。用户界面线程通常用于处理用户输入及响应用户生成的事件和消息。辅助线程通常用于完成不需要用户输入的任务(如重新计算)。Win32 API 不区分线程类型;它只需要了解线程的起始地址以开始执行线程。MFC 为用户界面中的事件提供消息泵,从而对用户界面线程进行专门处理。CWinApp 是用户界面线程对象的一个示例,因为它从 CWinThread 派生并对用户生成的事件和消息进行处理。

请注意,ExecutingFunction()应返回一个UINT类型的值,用以指明该函数结束的原因。一般情况下,返回0表明执行成功。
pParam:传递给线程函数的一个32位参数,执行函数将用某种方式解释该值。它可以是数值,或是指向一个结构的指针,甚至可以被忽略;
nPriority:线程的优先级。如果为0,则线程与其父线程具有相同的优先级;
nStackSize:线程为自己分配堆栈的大小,其单位为字节。如果nStackSize被设为0,则线程的堆栈被设置成与父线程堆栈相同大小;
dwCreateFlags:如果为0,则线程在创建后立刻开始执行。如果为CREATE_SUSPEND,则线程在创建后立刻被挂起;

pThreadClass 是指向 CWinThread 的一个导出类的运行时类对象的指针,该导出类定义了被创建的用户界面线程的启动、退出等;其它参数的意义同形式1。使用函数的这个原型生成的线程也有消息机制,此消息机制同主线程的机制几乎一样。

        在工作线程中使用的函数指针一般是指向全局函数的而不是类成员函数,因为这牵扯到对象的生命周期,如果一个对象在线程执行时被销毁了,那么这个线程的行为就成为不确定的了。

  • 应用程序的部署和重新发布

Visual C++ 引入了两种编写托管代码的方法。这两种方法都旨在简化 COM 编程,并且使程序能够访问由 .NET 公共语言运行库提供的服务,如垃圾回收和语言互操作性。

  • C++ 托管扩展   通过使用这些扩展,您可继续在现有程序中编写 C++ 代码。

属性旨在提供一种快捷有效的方法来简化使用 Visual C++ 进行的 COM 编程。属性与 C++ 关键字一样,都是在源文件中使用并由编译器进行解释。属性可以修改现有代码的行为,甚至可以插入附加框架代码来完成基本任务,例如实现 ActiveX 控件、创建类工厂或者设置数据库命令的格式。几乎可以将属性应用到任何 Visual C++ 对象(如类、数据成员以及成员函数)上,还可以将属性作为独立的语句插入到源代码中。

Visual C++ 帮助包括介绍属性化编程的各个方面的属性演练。

  • /clr 编译器选项。

  • /Gi 编译器选项已从该编译器移除;Visual C++ 编译器不再进行增量编译。/Gi 将被该编译器无提示忽略。

  • /GD 编译器选项已从编译器中移除。

  • 与 C++ 托管扩展关联的新关键字。

  • /RTC 编译器选项。

  • /w 编译器选项现允许指定特定警告的行为。

  • /Wall 编译器选项现在允许您启用所有警告,包括默认情况下禁用的警告。

  • 默认情况下关闭的一列警告。

  • CVPACK 实用工具已被移除。

  • /DEBUGTYPE 链接器选项已被移除。 COFF 格式中的符号支持已被移除;现在必须将符号放置在 .pdb 文件中。

  • /GPSIZE 链接器选项已被移除。链接器现根据是否存在与 GP 相关的到数据的重定位来确定公用变量(未初始化的全局数据项)的最佳位置。

    • 在依赖项检查时排除文件(新过程)。

    • “属性”窗口提供了一个可自定义的网格,用于查看和修改项目中对象的属性。

    • 项目属性页允许指定项目的生成设置。

    • 向导现在是用 HTML 和 JScript 设计的,它们具有支持文本文件,从而使自定义向导的灵活性和可扩展性更高。

    • 自定义生成过程是新的预生成事件。

    • 不再提供导出 NMAKE 生成文件的功能。使用 devenv 命令行开关从命令行生成 Visual C++ 项目。

    • 使用 /Gf 和导入到新版本的 Visual C++ 中,“图像编辑器”工具栏出现在工作区的顶部。“选项”选择器现在位于“图像编辑器”工具栏的最右侧,并显示为一个带有下拉箭头的按钮。“选项”选择器按钮上的图标随所选择的工具而变化。

      “图像编辑器”工具栏上的“文本工具”对话框

      “文本工具”对话框的行为已从 Visual C++ 。

      已将新行输入到文本中。

      退出文本工具并提交更改。

      已退出文本工具并提交了更改。

      退出文本工具并提交更改。

      已退出文本工具并提交了更改。

      退出文本工具并放弃更改。

      将新的一行输入到文本中。

      将新的一行输入到文本中。

      这些更改使文本工具的行为与标准对话框和其他图像编辑器工具的行为更为相似。

      Visual C++ .NET 中包含的下列库可能是新增的,也可能是经过更改的。

      • ATL 项目的默认设置已更改。

      • 更多关于 ATL 方法的参考主题包含代码示例。

      • 新类 CImage 提供增强的位图支持,包括以 JPEG、GIF、BMP 和可移植网络图形 (PNG) 格式加载和保存图像的能力。

      • 新的字符串转换宏和类。

      • 实用工具类:CAdapt

      • 若干个 ATL 方法已被替换。

      • CComModule 的功能已分散到若干个新类中。

      ATL Server 是一组本机 C++ 类,开发人员可用它来创建 Web 应用程序、XML Web services 以及其他服务器应用程序。许多类还可以用于客户端应用程序或组件。

      • 如果内存分配失败,new 运算符可能引发异常或返回零。

      • 允许使用超过 2038 年的日期的新函数:

      • 新增 __int64 版本的字符串函数:

      • 新增 Unicode 版本的控制台函数:

      • 计算打印格式化数据所需的字符数的新增字符串函数:

      • 由于受 C99 发布的时间所限,此 Visual C++ 版本不符合该标准。

      • 有关 MFC 的参考主题包含数百个新的代码示例。

      • 静态强制类型转换和 MFC 消息映射   从 Visual C++ .NET 开始,MFC 对消息处理函数的返回类型和参数类型进行更严格的类型检查。这些新增行为通过使用错误信息标记潜在不安全的消息处理函数,来通知开发人员可能会遇到的问题。MFC 现对

        例如,过去开发人员可以对 ON_MESSAGE 或 ON_REGISTERED_MESSAGE 使用返回 void 而非 LRESULT 的成员函数,并且编译时不报告任何错误。而使用 Visual C++ .NET,则可以捕获潜在的错误强制类型转换,并将它标记为错误。开发人员可以通过替换返回类型(用 LRESULT 替换)并重新编译来修复这种潜在的问题。

      • 对在 MFC 应用程序中使用 HTML 帮助提供了增强型支持。

      • DAO 支持:Visual C++ MFC 应用程序向导和 MFC DLL 应用程序向导不再支持 DAO 数据库项目。但是,仍然可以使用“添加类向导”添加从 DAO 派生的类。对于新的本机 C++ 项目,Microsoft 建议使用 OLE DB 或 ODBC。DAO 只用于维护现有的应用程序。

      • 附属 DLL 中本地化资源的增强型支持。

      • 新的使用者宏:用于按名称绑定到数据库中特定列的 COLUMN_NAME* 宏和用于绑定到二进制大对象 (BLOB) 的 BLOB* 宏。

      新增的 64 位数据类型

      若干 OLE DB 模板类中的方法已经被更改为使用新的 64 位数据类型而不是旧的 32 位数据类型。文档已更新以反映这些变化。如果文档和头文件( 示例

      • 由于向导结构已更改,因此以前为“自定义向导”提供的示例已不再使用,并已提供了新的“自定义向导”示例。

      此外,Visual C++ .NET 还包括以下领域的新增示例以及先前版本中提供的示例:

我要回帖

更多关于 mfc创建线程的三种方法 的文章

 

随机推荐