Конференция "KOL" » Глюк с MsgBox,ShowMsg [Delphi, D7, Windows, WIN2000]
 
  • <> (03.03.09 14:12) [0]
    Глюк с MsgBox,ShowMsg

    Вот код:


    var T: Integer;

    procedure TForm1.KOLForm1FormCreate(Sender: PObj);
    begin
     Timer1.Interval:=1000;
     T := 0;
     Form.Visible:=false;
    end;

    procedure TForm1.Timer1Timer(Sender: PObj);
    begin
     T := T+1;
     IF T mod 2 =0 THEN
     begin
      Timer1.Enabled := false;
      if (MsgBox('TEST',1) =1 ) then Form.Close;
      Timer1.Enabled := true;
     end;
     beep(1000,100);
    end;



    Если програму запускать из среды Дельфи, то всё ок, а если запускать отдельно скомпилированный файл - то в случае если имеется какое-нибудь окно (окно любой программы) во фронте, то первый раз MsgBox появляется ЗА этим окном, а второй и следующие разы - появляется поверх остальных окон, т.е. как и должно быть. А если использовать ShowMsg, то он появляется всегда ЗА этим окном.
  • Jon © (03.03.09 14:53) [1]
    ShowMsg('TEST',MB_OK or MB_ICONINFORMATION or MB_APPLMODAL or MB_SETFOREGROUND);

  • <> (03.03.09 15:00) [2]
    >ShowMsg('TEST',MB_OK or MB_ICONINFORMATION or MB_APPLMODAL or MB_SETFOREGROUND);

    То же самое, появляется за окном которое на переднем плане.
  • Дмитрий К © (03.03.09 15:36) [3]
    MB_SYSTEMMODAL
  • <> (03.03.09 16:43) [4]
    > MB_SYSTEMMODAL
    Да, это работает.

    Ещё если перед вызовом MsgBox послать сообщение:
    SendMessage(GetDesktopWindow(), WM_SYSCOMMAND, SC_HOTKEY, form.Handle);



    То всё ОК.
 
Конференция "KOL" » Глюк с MsgBox,ShowMsg [Delphi, D7, Windows, WIN2000]
Есть новые Нет новых   [134431   +15][b:0][p:0.001]