delphi对话框确认问题
大家好!我的应用程序是用delphi编写的,用到了多线程。在三个线程中都用到了
if application.messagebox('忽略吗?',‘报警’,mb_yesno)=id_no then
begin
。。。
end
else
begin
end;
遇到问题:如果三个线程中的提示对话框同时出现的话,点击一个对话框的是或者否,三个对话框都消失。
请大家帮忙,我能否一个一个的点击对话框中的是或者否。
还有就是不用这种方式的对话框,请大家告诉我其他方式的对话框,能实现我的功能也行
先谢谢大家了
[解决办法]
Application.MessageBox是呼叫API:MessageBox。
MessageBox是一個模態窗口,但只會對呼叫它的UI線程來說,是模態窗口。
所以,在三個線程UI線程中,三個模態窗口之間應該是不會互相影響的。
參考application呼叫messagebox的方法:
Result := Windows.MessageBox(Handle, Text, Caption, Flags);
這個handle是app的隱藏窗口,是主線程中的東西。
這樣使用是有問題的。
其他線程不應去這樣用。應該自己呼叫messagebox,第一個參數傳0或本線程的窗口handle
[解决办法]
线程里面不好直接出窗口吧,最好发消息给主线程。