我在一个程序里写了一个对话框,里面有几个按钮Init,Start,Stop,,分别对应
图像控件的函数InitDev(),PreviewStart()和PreviewStop()
结果发现,如果是用DoModal()就没有问题,如果用无模式就不行.
但不是说无模式产生不了窗口,而是产生窗口后,每按完一个按钮,函数就返回了,比
如按了Init按钮,执行了Init()是很成功,可是函数执行完就返回了,到了
PreviewStart()就不能使用,提示还没有进行初始化,也就是说还没有Init(),
如果我把PreviewStart()加到Init按钮下进行,
Init();
PreviewStart();
::Sleep(3000);
这样可以运行PreviewStart()了,但到函数返回时
它也返回了,我加了Sleep(3000),可以看到图像预览了3秒钟,但
函数返回时它就消失了,而本来应该是我按下PreviewStop()才停止
预览的.
但如果我采用有模式方式,用DoModal()产生对话框,则没有任何问题,
我可以依次按下Init,PreviewStart和PreviewStop,,预览完全按照
我想要的时间进行显示.
到底为什么会出现这种情况呢,我不懂了.可现在我必须采用无模式对话框
,因为这个对话框是一个大系统的一个部分,是从一开始就要存在,而且其间
还要做其它事情.
有哪位高手懂得呢,快帮帮我吧!!
无模式对话框与有模式对话框的根本区别在于:
前者的消息循环在主窗口中,而模式对话框有其独立的消息循环,
因此在无模式对话框中要建立自己的消息,并纳入主窗口循环中,
你可能在这里没有处理好,这只是我的一点愚见
你不要用编辑控件作支撑了,改用一个自己生成的无模式对话框作载体,肯定
可以解决问题, 我以前就遇到过这种情况,这是你用到的图像控件所要求的,
如果你编过控件就会知道