`
deepfuture
  • 浏览: 4375357 次
  • 性别: Icon_minigender_1
  • 来自: 湛江
博客专栏
073ec2a9-85b7-3ebf-a3bb-c6361e6c6f64
SQLite源码剖析
浏览量:79860
1591c4b8-62f1-3d3e-9551-25c77465da96
WIN32汇编语言学习应用...
浏览量:69448
F5390db6-59dd-338f-ba18-4e93943ff06a
神奇的perl
浏览量:102784
Dac44363-8a80-3836-99aa-f7b7780fa6e2
lucene等搜索引擎解析...
浏览量:283923
Ec49a563-4109-3c69-9c83-8f6d068ba113
深入lucene3.5源码...
浏览量:14910
9b99bfc2-19c2-3346-9100-7f8879c731ce
VB.NET并行与分布式编...
浏览量:66977
B1db2af3-06b3-35bb-ac08-59ff2d1324b4
silverlight 5...
浏览量:31805
4a56b548-ab3d-35af-a984-e0781d142c23
算法下午茶系列
浏览量:45787
社区版块
存档分类
最新评论

MFC对象与WIN32句柄的映射-TLS

阅读更多

1、没有办法把一个MFC某线程交到另一个线程,不能在线程间传递MFC对象指针,包括常用的MFC对象如CWND、CDC、CFONT等。

2、如果两个线程都调用CWND::GETDLGITEM()以取得对话框中的一个控件(如EDIT),则每个线程获得不同的指针,当对此指针的一个索求行为出现时,MFC产生出一些临时性对象,这些对象若被许多线程共享,MFC没有能力预期它们的生命。
3、这个限制是说,你不能放一个指针到结构中,而该结构被一个WORKER线程使用,你不能把一个指向CDIALOG或CVIEW的指针交给另一个线程
4、TLS的使用说明了以AFXBEGINTHREAD()在MFC程序中产生UI线程的重要性,在线程间共享对象,有个替代方案,不要放置MFC对象,放对象的HANDLE,可以利用GETSAFEHANLE获得对象的安全HANDLE,还可以用GETSAFEHWND()。
5、当你把HANDLE给新线程时,线程可以把该HANDLE附着到一个新的MFC对象:使用FROMHANDLE产生一个临时对象,使用ATTACH()产生一个永久对象。
6、MFC同步控制类如LOCK()和UNLOCK()
7、对于MSGWAITFORMULTIPLEOBJECTS()的支持,MFC自己运行消息循环,如何解决呢?
(1)产生另一个线程用来等待,当对象被激发时即送出一个消息给主线程。
(2)改写MFC消息循环,它存在于CWINTHREAD::RUN()和CWINTHREAD::PUMPMESSAGE()中
分享到:
评论

相关推荐

    Java调用Win32获取窗口句柄JNative-1.3.2

    Java调用Win32 API获取窗口句柄是一个跨平台编程中的常见需求,特别是在需要与操作系统进行深度交互的应用中。JNative库是实现这一目标的一种工具,它允许Java代码通过JNI(Java Native Interface)来调用C/C++编写...

    MFC获得各类指针,句柄的方法

    ### MFC获得各类指针,句柄的方法 #### 概述 MFC(Microsoft Foundation Classes)作为Windows平台上的一个强大的C++类库,为开发者提供了丰富的API来简化GUI应用程序的开发工作。在MFC开发中,获取句柄和指针是...

    MFC和Win32.doc

    - MFC对象是C++类的实例,它们通常是对Win32 API中的结构体或概念的封装,如CWnd对应HWND(窗口句柄),CFile对应HANDLE(文件句柄)等。这些C++类内部包含了一个成员变量来保存Windows对象的句柄。 - Windows对象...

    《对话框》之《MFC和Win32》

    《对话框》之《MFC和Win32》主要探讨了MFC框架如何对Win32 API进行封装,以及MFC对象(MFC Object)与Windows对象(Windows Object)之间的关系。理解这种关系对于深入学习MFC编程至关重要。 1. **MFC Object与...

    mfc 类之间的指针句柄转换

    #### 三、MFC中常见的句柄与指针获取方式 1. **在View中获取Doc指针** - `CYouSDIDoc *pDoc = GetDocument();` 在单文档界面中,一个视图只能对应一个文档,通过调用`GetDocument()`函数可以直接获取到当前视图...

    MFC及Win32命名规范

    控件句柄与对象指针 在Win32 API中,窗口、设备上下文、画笔、字体等资源通常由句柄(HANDLE)表示。而在MFC框架中,这些资源被封装成相应的类,如`CWnd`、`CDialog`、`CDC`等。MFC命名规范建议使用以下格式: - ...

    句柄截图-匹配-源码-修正

    在IT领域,句柄(Handle)是操作系统用来标识和引用对象的一种方式,它是一个无符号整数值,用于操作系统内部管理。在这个"句柄截图-匹配-源码-修正"的项目中,开发者利用句柄技术实现了对后台窗口的截图功能,并且...

    C# 调用win32 api函数-user32.dll详细说明

    ### C# 调用 Win32 API 函数——user32.dll 详细说明 #### 概述 在开发基于 Windows 的应用时,有时需要直接调用底层的 Windows API 函数来实现某些功能,比如获取窗口句柄、绘制图形、控制窗口等。这些功能可以...

    mfc获得各个类的句柄.doc

    这是一个关于mfc获得各个类的句柄的文档资源,有需要的朋友下载阅读哦。

    MFC句柄、指针总结(转)

    本文将对MFC中的句柄和指针进行总结,帮助你理解和掌握在MFC程序中如何获取和使用这些对象。 首先,句柄是Windows操作系统中用来标识资源的一个整数值,比如窗口、控件、设备等。在MFC中,句柄通常用于非成员函数...

    MFC教程-消息映射的实现

    ### MFC教程——消息映射的实现 #### Windows消息概述 Windows消息机制是Windows应用程序的基础之一,它使得程序能够响应用户的交互操作以及其他系统的事件。在Windows应用程序开发中,特别是使用MFC(Microsoft ...

    winspy获取win32窗口句柄

    它在Win32 API(应用程序接口)中扮演着至关重要的角色,因为大部分与窗口交互的操作都需要使用窗口句柄。"Winspy获取Win32窗口句柄"这个主题涉及的是如何通过编程来查找并获取Windows系统中的窗口句柄,以便进行...

    MFC和Win32创建、暂停、删除线程例子

    MFC(Microsoft Foundation Classes)和Win32 API都提供了创建、管理和控制线程的功能。下面将详细介绍如何使用MFC和Win32 API来创建、暂停以及删除线程,并在VS2017项目中实现线程对UI的操作。 首先,我们来看**...

    MFC中 各类的指针和句柄的获取方法

    在MFC(Microsoft Foundation Classes)编程中,指针和句柄是重要的概念,它们用于管理和操作应用程序中的对象和窗口。本文将详细介绍如何在MFC中获取各类指针和句柄,以及常用API函数的使用。 首先,让我们了解...

    学习MFC之前要了解的win32程序基础

    在深入学习MFC之前,掌握Win32程序基础至关重要,这不仅能够帮助程序员更好地理解MFC框架的设计理念,还能在实际开发中实现更高效的代码编写和调试。以下是从标题、描述、标签以及部分内容中提炼出的关键知识点: #...

    MFC框架下简单异形窗口--SetWindowRgn

    在Windows编程领域,MFC(Microsoft Foundation Classes)是微软提供的一套C++库,用于简化Windows应用程序开发。本文将深入探讨在MFC框架下创建一个简单异形窗口的方法,特别是利用`SetWindowRgn` API函数来实现这...

    第10章 MATLAB图形对象句柄-习题答案.doc

    MATLAB图形对象句柄是MATLAB图形编程的核心概念,它允许用户对图形进行精确控制,包括创建、修改和管理各种图形元素,如图形窗口、坐标轴、线条、填充区域等。在本章习题中,主要涉及以下几个知识点: 1. **图形...

    mfc类之间的指针句柄转换.doc

    下面我们将深入探讨MFC中句柄与指针之间的转换,以及它们在不同类之间如何交互。 1. **句柄与指针的概念** - 句柄是Windows操作系统用来标识资源的一个整数值,它不是对象本身,而是一个可以用来查找对象的标识符...

    MFC 句柄的理解

    在MFC中,句柄(Handle)扮演着关键角色,它是一种标识符,用于间接访问操作系统中的内核对象。理解句柄的概念对于进行高效且安全的Windows编程至关重要。 首先,句柄是一个数值,它可以用来检索和操作大量的数据,...

Global site tag (gtag.js) - Google Analytics