我在程序启动时,加了一线程显示另一个子窗体,因为显示了该子窗体后,主窗体不能被激活,因此我在线程中用showmodal显示该子窗体,但是发现显示后,主窗口还是可以激活。这是怎么回事?难道线程中的窗体用showmodal显示,并不会影响到主窗体吗?
那该如解决?还请高手们指点,谢谢!
那该如解决?还请高手们指点,谢谢!
解决方案 »
- 庆祝自己在csdn注册9年,感谢csdn热情的网友,祝大家新年快乐
- Class TSysTray not found 这个怎样加载到delphi中,找了很久啊!
- vcwfs.dll 函数的引用
- 我的客户程序跟sql2000server保持常连接还是连接取完数据后就断开?
- 关于递归问题,高手救命呀
- 救命呀!!!窗体不能显示了:(
- 哪里有TopGrid 2.20(ProfGrid 2.20) for Delphi 7控件下载??
- 模拟webbrowser滚动条的问题
- 有一个猜牌游戏,搞不懂电脑是如何猜到我心里默认的那一张牌?请教高手其中编程的玄机...(送百分了!)
- 请帮助想个提高处理速度的办法!
- 各位大哥,帮我看看该字符串是用什么加密的
- 打开子窗口时如何使其最大化
ShowModal伪实现代码如下:repeat
PeekMessage;
TranslateMessage;
...
DispatchMessage
until ...PeekMessage取的是当前线程的消息队列。你把ShowModal函数放在线程中调用,那么它取不到主线程
的消息,也无法过滤,处理主线程消息。因此模块窗口的特性无法体现出来了。
我在窗体的oncreate事件中加入
var
handle:THANDLE;
begin
handle:=CreateThread(nil,0,@threadproc,nil,0,threadid);
WaitForSingleObject(handle,INFINITE);
end;
这样加入后,主窗体一直不能显示出来。子窗体也没有显示出来,并且程序没有报错。还请指点,谢谢!
辅助线程中通过发送消息给主窗口。主窗口收到消息后,ShowModal窗口。