`
yesjavame
  • 浏览: 689491 次
  • 性别: Icon_minigender_2
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

土法解决工作线程中调用MFC对话框

阅读更多

问题:我使用createthread直接生成了一个线程,然后企图在该线程中直接调用CDialog派生类,结果是可以显示,但是当有消息比如LButtonDown或鼠标移动到标题栏时立刻出错,调试进去,发现以下声明:

(wincore.cpp)

// Note: if either of the above asserts fire and you are
// writing a multithreaded application, it is likely that
// you have passed a C++ object from one thread to another
// and have used that object in a way that was not intended.
// (only simple inline wrapper functions should be used)
//
// In general, CWnd objects should be passed by HWND from
// one thread to another.  The receiving thread can wrap
// the HWND with a CWnd object by using CWnd::FromHandle.
//
// It is dangerous to pass C++ objects from one thread to
// another, unless the objects are designed to be used in
// such a manner.

其实我并没有从主线程中传任何变量给子线程,问题可能出在我没有使用派生线程类的方法去使用线程,在全局线程函数中使用MFC的派生类,导致新建窗口没有缺省的父窗口------导致消息无法正常的流转和传递,即对话框窗口无法正常的接收消息也无法处理上溯的消息,所以造成致命错误。所以在创建线程的时候,我把窗口句柄当作参数传给子线程,如下所示:

 
::CreateThread(NULL,0,ListenMessage,this->m_hWnd,0,&ClientThreadId);
在子线程内接受句柄,并传给CDialog派生类:
         HWND hWnd=(HWND)lpArg;
         CWnd* wnd=CWnd::FromHandle(hWnd);
         CxxxxDlg myDlg(wnd);
然后编译(PNT 4.0  VC6),运行良好。

一般来说全部使用MFC,在线程的使用中是不会出现这种情况的,我由于准备不够充分,造成这种尴尬的局面,一般是应该避免的,使用这种方式创建线程时,应尽量避免有界面的线程,单纯的工作线程工作同样稳定高效。另外为了保证不出问题,对话框的属性为pop and none border,no system menu.

重要声明,该方法有猜测的成分,本人不对其作承诺,如果你不幸向我一样骑虎难下,希望该方法对你有所帮助。

如果对你有帮助,请发邮件给我(cd_yuan@sina.com),如果想骂人,请发信给版主。 <!--article end-->

分享到:
评论

相关推荐

    30m混凝土屋架土法吊装施工.doc

    这篇文档详细介绍了四川省黔江卷烟厂俱乐部的建设过程中,30米跨度预应力混凝土屋架的土法吊装施工方案。项目建筑面积达到6000平方米,包含多个功能区域,其中观众厅的屋盖结构尤为复杂,采用了30米跨度的预应力混凝...

    浅谈网架土法安装施工安全技术.docx

    ### 网架土法安装施工安全技术解析 #### 一、网架土法安装施工工艺简介 随着钢结构领域的不断发展,网架结构因其独特的力学性能和美观性被广泛应用。网架安装作为整个施工过程中的核心环节,其安全性尤为重要。...

    隧道三台阶预留核心土法.doc

    **隧道三台阶预留核心土法**是一种针对地质条件复杂、稳定性差的隧道施工中的开挖技术,主要用于确保施工安全和质量。该方法适用于类似新店隧道这样遇到不良地质条件(如松散土体、孤石、丰富地下水)的隧道工程。 ...

    环形开挖留核心土法.doc

    环形开挖留核心土法是一种隧道施工技术,主要用于稳定围岩条件较差的隧道挖掘。这种方法的特点在于分步骤进行开挖,保持开挖面的稳定性,以减少对围岩的扰动,降低坍塌风险。 1. **施工工艺**: - 开始时,上部...

    参考资料-30m混凝土屋架土法吊装施工.zip

    【混凝土屋架土法吊装施工】是一种在建筑工程中常见的技术手段,特别是在处理大型或重型结构如桥梁、工业厂房及高层建筑的屋顶时。30米的混凝土屋架是一项艰巨的任务,因为它涉及到精确的工程计算、安全操作以及复杂...

    土法制作防毒面具.pdf

    标题中的“土法制作防毒面具”指的是使用简易方法制造防毒面具,这通常是在紧急情况下或者资源有限时的一种应急措施。防毒面具的主要目的是过滤和阻止有害化学物质、气体或颗粒物进入呼吸系统,保护佩戴者的健康。 ...

    几种土法营养液制作方法.doc

    几种土法营养液制作方法.doc

    小型机械整流同步发电机土法制造工艺-综合文档

    小型机械整流同步发电机土法制造工艺

    环形开挖预留核心土法施工设计工艺设计工法.doc

    环形开挖预留核心土法施工设计工艺设计工法.doc

    防止猪咬架的土法,是什么原因导致的.doc

    防止猪咬架的土法,是什么原因导致的.doc

    建筑施工组织2021-30m混凝土屋架土法吊装施工.dot

    建筑施工组织2021-30m混凝土屋架土法吊装施工.dot

    二级建造师施工之土法吊装安全操作规定.docx

    ### 二级建造师施工之土法吊装安全操作规定 #### 一、施工前准备与技术交底 1. **方案制定与技术交底**: - 施工前,技术人员需与有经验的工人共同研究制定吊装方案。 - 对参与操作的所有人员进行详细的技术交底...

    30m混凝土屋架土法吊装施工施工工法工艺2018.doc

    《30m混凝土屋架土法吊装施工施工工法工艺2018》文档主要阐述了一种在山区环境下,采用特殊工法进行大跨度混凝土屋架吊装的施工技术。该工法针对30米跨度的预应力混凝土折线型屋架,适用于没有大型吊车设备的情况。 ...

    自家用土法做酱油.doc

    - 将豆子放入干净的编织袋中,上下覆盖稻草以保温。 - 在适宜的温度(约25-30℃)和湿度(60%-70%)条件下,让豆子自然发霉,通常需时15天左右。期间需注意观察,防止豆子过湿腐烂或过度发霉。 4. **判断发霉状态...

    推选文档HTML语法与元素-土法制作法PPT.ppt

    内容置中 ``` 5. **列表(Lists)** HTML提供了有序列表`&lt;ol&gt;`和无序列表`&lt;ul&gt;`,以及定义列表`&lt;dl&gt;`。列表项通过`&lt;li&gt;`标签定义。 6. **表格(Tables)** `&lt;table&gt;`用于创建表格,`&lt;tr&gt;`表示行,`&lt;td&gt;`表示...

    安全生产工作总结报告5篇(1).doc

    本报告总结了2020年某镇在安全生产和“两土”(非法采矿和土法炼锌)取缔工作上的主要行动和成果。 一、强化组织领导 该镇在安全生产工作中,建立了明确的领导体系,由主要负责人带头,各部门协同配合,形成了从上...

    2021年上半年安全生产工作总结_2.docx

    【安全生产工作的重要性】 安全生产是经济社会发展的重要基础,关系到国家的稳定、人民的生命财产安全和社会的和谐。2021年上半年,我镇严格按照县委、政府的要求,坚持以人为本,安全第一的原则,高度重视安全生产...

    Excel计算模块在水文测验数据处理中的应用.pdf

    文章还提到了水泥改性土法在土工技术中的应用,这是一种能有效降低膨胀土胀缩性、提高其强度和压缩模量的技术。与粉煤灰改性、土工格栅、土工袋加筋及土工膜封闭覆盖技术相比,水泥改性土法具有明显优势,尤其是在...

    上半年安全生产工作总结范文.docx

    根据县委、政府的要求,我镇在安全生产工作中遵循“以人为本,安全第一”的原则,建立了清晰的领导体系,明确各层级的职责和任务。通过领导干部联系点制度,强化了对安全生产工作的领导,确保每位干部都认识到安全...

    04挖方路基施工(一)-答案.pdf

    2. **推土作业**:推土是挖方后平整场地的重要步骤,常见的推土技术有下坡推土法、槽形推土法、并列推土法、接力推土法和波浪式推土法,这些方法能有效提高工作效率并确保地形的平整度。 3. **挖掘机械**:正铲挖掘...

Global site tag (gtag.js) - Google Analytics