请教!有关PropertySheet的问题

qq_310 2004-12-31 09:30:12
我用PropertySheet打开两个对话框:
PropertySheet MyPropertySheet;
MyPropertySheet.Append(dlg1);
MyPropertySheet.Append(dlg2);
MyPropertySheet.DoMadal();
操作时进入属性页后,如果触发一个事件,程序运行,则不管点击什么地方,界面都是死的,必须等到该事件执行完毕,才能触发其他事件?为什么?
而且我编写代码想在程序运行过程中,把一些操作纪录下来体现的列表框中,也要等单个事件执行完毕才会将那些字符串添加到列表框中,为什么?
...全文
129 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Atomictry 2005-01-08
  • 打赏
  • 举报
回复
1. 用一个线程处理你的所说的清洗
2. 每清洗一个文件, 通过SendMessage把你的Length参数传递到主窗口中
3. 该主窗口的该消息响应函数处理Length参数的显示
qq_310 2005-01-07
  • 打赏
  • 举报
回复
暂时还不知道怎么向窗口发消息。
试试先。
关于多线程,什么书籍讲的比较全面?一般的书只大概讲了下,不够用啊!
还有多态性,有什么好的参考书或者什么地方有全面的示例源代码可以借鉴的?

谢谢了!
sjhunter 2005-01-06
  • 打赏
  • 举报
回复
你的需求就更要做成多线程了,否则控件无法更新,我一般这样做:
将你的“清洗”作一个线程,需要更新界面的时候向窗口发消息,窗口响应消息就可以了
lixiaosan 2005-01-06
  • 打赏
  • 举报
回复
单独开一个线程处理你的清洗
qq_310 2005-01-06
  • 打赏
  • 举报
回复
我想了一下,多线程好像不好处理。
我的清洗程序思路大概这样的:

先打开一个文件夹,将文件夹下的所有原始文件都加到列表框中,然后逐个读取列表框中的原始文件进行清洗,每清洗完一个,返回字节数length,在另外一列表框中显示“成功清洗length字节”,单个文件清洗是很快的,1,2秒钟;把所有都清洗完就比较耗时了。
也就是说这个线程与界面是交互的,每1,2秒内要读取一次列表框中内容并且把返回值添加到另外一个列表框中。在辅助线程中怎么处理界面上的控件呢?比如说把某个编辑框的值更改?

再:单独做的一个清洗对话框,也是单线程,能够正常响应其他事件。这里把这个对话框加到PropertySheet中,就不能够了。
sjhunter 2004-12-31
  • 打赏
  • 举报
回复
因为你的代码是单线程呀,多线程实现还比较现实一点
三炮 2004-12-31
  • 打赏
  • 举报
回复
gz
superliufa 2004-12-31
  • 打赏
  • 举报
回复
该事件执行完毕?执行时间很长么?
你肯定没有用后台线程,所以该事件的代码执行的时候,主线程必须等待,因而无法响应界面消息。看起来好像是“死”一样。
关于第二个问题,建议你理解一下界面重绘的机制,也就是WM_PAINT的过程。

15,978

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧