mfc-MFC更新界面,用哪种方式好

问题描述

MFC更新界面,用哪种方式好

最近在做一个MFC对话框程序。情况是这样的,
一、程序主对话框上,点击按钮,打开一个非模态的子对话框窗口,子对话框里执行一些操作后需要把操作的结果跟新到主对话框上。想到两种方式:
1.子对话框窗口类中保存主对话框指针,然后在子对话框窗口类利用该指针更新主对话框界面
2.自定义消息,利用SendMessage或PostMessage函数发送消息到主对话框,函数的lParam参数保存操作的结果。主对话框收到消息后更新界面。
请问哪一种方式好。

二、子对话框类中创建了一个线程,线程里执行一些操作,操作结果需要更新到子对话框界面上。还是同样的问题,是传递指针好,还是利用消息好。之前学过C#,C#里面,非UI线程无法直接访问UI线程的界面元素。

恳请各位路过的大神指导一下

解决方案

第一个,消息好。第二个问题我觉得只能用消息,不能用指针,因为跨了线程了,应该可能会产生同步问题。总而言之,消息是安全的数据传输方式。

解决方案二:

一般用PostMessage的方式,异步,同时把数据给主UI线程来更新界面。而不是直接操作界面

时间: 2024-08-11 15:08:51

mfc-MFC更新界面,用哪种方式好的相关文章

Android异步更新UI的四种方式_Android

大家都知道由于性能要求,android要求只能在UI线程中更新UI,要想在其他线程中更新UI,大致有4种方式,下面分别使用四种方式来更新一个TextView.1.使用Handler消息传递机制 package com.example.runonuithreadtest; import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.widget.TextView;

Android 更新UI的几种方式

1.Activity的 runOnUiThread    textView = (TextView) findViewById( R.id.tv ); new Thread(new Runnable() { @Override public void run() { runOnUiThread(new Runnable() { @Override public void run() { textView.setText( "更新UI了"); } }); } }).start(); an

Android异步更新UI的四种方式

大家都知道由于性能要求,android要求只能在UI线程中更新UI,要想在其他线程中更新UI,大致有4种方式,下面分别使用四种方式来更新一个TextView. 1.使用Handler消息传递机制 package com.example.runonuithreadtest; import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.widget.TextView;

vc60-VC(MFC)串口调试界面添加一个按钮控制两种颜色变换的指示灯。谢谢!!!

问题描述 VC(MFC)串口调试界面添加一个按钮控制两种颜色变换的指示灯.谢谢!!! 用MFC做出来一个只能发送和接受的界面之后,需要添加一个或两个按钮控制两种颜色变换.请问是指示灯吗?代码怎么写?谢谢. 解决方案 直接放一个static控件,准备两个图片,一个红灯一个绿灯 直接画http://blog.csdn.net/lujianfeiccie2009/article/details/7281996 当然,也可以不用先准备图片,而直接通过画圆.填充绘制出灯.

JSP实现界面的自动跳转的几种方式

下面来谈一谈在jsp中实现的几种界面自动跳转的方法. 使用JavaScript脚本 <html> <script language=javascript> function out(obj){ var i=obj; if(i==0) document.location.herf="target,html"; document.body.innerHTML=i; i--; setTimeout("out("+i+")",10

手机客户端的两种主要的界面布局与设计方式

本文主要讨论手机手机客户端的两种主要的界面布局与设计方式,对于手机设计师来说,此类文章比较少见,当然其中对于用于体验与可用性的实现依然很普遍. 手机产品设计与传统的桌面和web产品设计相比,最显著的约束是设计空间的急剧缩小.打个比方,这就像从一个100平米的房子搬到5平米的单间,东西没少一样,可以施展的空间却小了几十倍.更重要的是,在这样一个小空间里,你不能把东西胡乱摆放,要依旧保持它们的清晰.合理.简洁.美观.借用<用户体验的要素>中的名词,这涉及到"框架层"的设计问题,

Windows Update自动更新的5种方式

Windows Update是我们用来升级系统的组件,通过它来更新我们的系统,能够扩展系统的功能,让系统支持更多的软.硬件,解决各种兼容性问题,让系统更安全.更稳定.今天,我们就来分析一下因种种原因导致的更新失败,让大家在更新系统的时候能够畅通无阻. 殊途同归,五种方式升级系统 方法1:更新系统最常用的方法是单击"开始→Windows Update"连接到微软的更新站点进行更新.如果你不小心将"开始"菜单上的"Windows Update"删除了

c++-MFC做登陆界面,Format过后m_rs.open不通过,如果改成注释的那句就可以。数据库是SQL

问题描述 MFC做登陆界面,Format过后m_rs.open不通过,如果改成注释的那句就可以.数据库是SQL void CMyClassDlg::OnBnClickedLogin() { UpdateData(true); m_rs.m_strFilter.Format(_T("Username='%s' and?passwords='%s'"),m_User,m_pwd); //m_rs.m_strFilter="Username='admin' and password

【c++】涉及到MFC的可视化界面编程,如何设计高效率的类?有什么基本原则?

问题描述 [c++]涉及到MFC的可视化界面编程,如何设计高效率的类?有什么基本原则? 如题.用MFC编写有可视化界面的程序,如何设计类?可以谈自己的体会,也可以贴给我相关资源,谢谢! 解决方案 其实不需要多设计,mfc都替你封装好了,你需要的就是熟悉它的提供的各种控件组合,"来组装你的界面. 等你熟悉了,自然就知道怎么设计界面库了. 解决方案二: 纯 MFC 实现,还是借助于第三方一些库吧 不用太复杂的设计,贴图 + 简单的处理逻辑.将基本的控件设计成类就行! 解决方案三: 想要高效率就别用M