大家好!我的应用程序是用delphi编写的,用到了多线程。在三个线程中都用到了
if application.messagebox('忽略吗?',‘报警’,mb_yesno)=id_no then
  begin
  
  end
else
 begin
   
 end;
遇到问题:如果三个线程中的提示对话框同时出现的话,点击一个对话框的是或者否,三个对话框都消失。
请大家帮忙,我能否一个一个的点击对话框中的是或者否。
还有就是不用这种方式的对话框,请大家告诉我其他方式的对话框,能实现我的功能也行
先谢谢大家了

解决方案 »

  1.   

    Application.MessageBox是呼叫API:MessageBox。MessageBox是一個模態窗口,但只會對呼叫它的UI線程來說,是模態窗口。所以,在三個線程UI線程中,三個模態窗口之間應該是不會互相影響的。參考application呼叫messagebox的方法:
    Result := Windows.MessageBox(Handle, Text, Caption, Flags);
    這個handle是app的隱藏窗口,是主線程中的東西。
    這樣使用是有問題的。其他線程不應去這樣用。應該自己呼叫messagebox,第一個參數傳0或本線程的窗口handle