返回信息流在MFC中定义了一个主界面class main,一个对话框class dialog,主界面中按钮button可以打开对话框。
现有一变量a,我想让它在对话框中显示,可每次打开对话框时,总是显示我打开瞬间a的取值,而a是不断变化的,我想让它自动刷新应该怎么做?
不用多线程该怎么做,是不是要刷新窗口,怎么获得对话框的窗口句柄?
已经解决了,用了自己的方法,不过还是谢谢大家!
在主界面中声明一个对话框的静态类dlg
当主界面中变量a改变时,用SetDlgItemInt(dlg.GetSafeHwnd(),控件ID,数值,0)
改变对话框中控件的数值
这是一条镜像帖。来源:北邮人论坛 / cpp / #36263同步于 2010/3/3
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
MFC 如何自动刷新对话框?
pnbf
2010/3/3镜像同步17 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
如果必须通过刷新来改变的话 可以用OnPaint和OnDraw
其实变量的话 可以改变其值 有些控件会自动显示在对话框上的
至于多线程么 自己另开一个线程来运行函数就ok 或者使用定时器应该也行的
用edit控件显示数值
因为我的变量是在另外一个类里,所以每次打开对话框时,只是取到了瞬时值,以后变量还会变化,但对话框里的值没有变化
UpdateData能刷新,但刷新的是当前的界面,不是我打开的对话框
我想每次变量改变时是不是能触发对话框刷新,但不知道怎么做?
【 在 KevenStar 的大作中提到: 】
: 如果必须通过刷新来改变的话 可以用OnPaint和OnDraw
: 其实变量的话 可以改变其值 有些控件会自动显示在对话框上的
: 至于多线程么 自己另开一个线程来运行函数就ok 或者使用定时器应该也行的
不理解阿,Windows图形界面程序是有消息循环的,一般会处于“等待”状态,直到事件发声;在什么事件也没有发声的情况下,除了用多线程,还有什么办法使得变量改变呢?
edit对应的变量是变了,但在控件中没有显示
我不想在dailog中做个按钮,点击才刷新
【 在 kissme 的大作中提到: 】
: a不断变化,你报告a变化事件,然后变化时设一下edit的值。
恩,按你说的做还是有问题。
举个简单的例子,我在主界面main.h中声明CDlg dlg;然后在main.cpp中设置按钮button
button功能如下:
int a=dlg.DoModal();
dlg.UpdateData(false);
if (a==IDOK)
{
}
一运行到dlg.UpdateData(false);就报错了,是怎么回事呢?
【 在 binux 的大作中提到: 】
: 既然是通过主界面调用的对话框,那么主界面肯定能访问到对话框的类
: dialog.UpdateData(false);
: 不就好了