Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.06.25;
Скачать: CL | DM;

Вниз

MessageBox без запуска Application.Run()   Найти похожие ветки 

 
kapral   (2006-06-07 11:02) [0]

после       Application->Initialize();
делаю
MVCT=new TMVCT;
если базы данных нет и т.д. выхожу, не вызывая
Application->Run();
но хотелось бы выдавть сообщение пользователю, чего не хватает
вот тут и меня ожидала засада - вызываю ::MessageBox(NULL, и генерируется сообщение об ошибку, которую оловить невозможно
что делать?


 
Сергей М. ©   (2006-06-07 11:05) [1]

см. Windows.MessageBox()


 
tesseract ©   (2006-06-07 11:07) [2]

Например так :
MessageBox(0, "", "", MB_ICONWARNING or MB_OK);


 
kapral   (2006-06-07 12:55) [3]

так я же и так и написал
::MessageBox(NULL, и т.д.
тут засада в том, что Application->Run();
запускает обработчик сообщений и ::MessageBox(NULL, и т.д. хотя и не принадлежит окну, но сообщение об ошибке вылетает
а если не использовать ::MessageBox(NULL, все хорошо, только вот беда, что пользователь не понимает, почему нет ничего
у меня работа между несколькими процессами, если процесс (программа не запущена, то нельзя ничего делать другому процессу), вот только как сообщить пользователю, что у него процесс не запущен
самое простое, через ::MessageBox(NULL, -но увы


 
tesseract ©   (2006-06-07 13:11) [4]

странно у меня всегда работало.


 
Сергей М. ©   (2006-06-07 13:11) [5]


> так я же и так и написал
> ::MessageBox


Это ты вызвал метод MessageBox объекта Application, а не одноименную WinAPI-ф-цию


 
kapral   (2006-06-07 14:19) [6]

я же ::MessageBox написал
а не Applicaton->MessageBox();
это вообще не будет работать Application->Run();
не запущена


 
Сергей М. ©   (2006-06-07 15:00) [7]

Приведи полный текст файла проекта..


 
kapral   (2006-06-07 16:15) [8]

WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
try{
try{
int f=1;
      Application->Initialize();
MVCT=new TMVCT;
 if(!Start())
{  
f=2;
 goto end_app;
}
    Application->Run();
}
  catch (Exception &exception)
  {
      Application->ShowException(&exception);
      f=0;
  }

  catch (...)
  {
  f=0;
  }
}
__finally
 {
 End();
 Sleep(1000);
end_app :  delete MVCT;
if(f==2)

  ::MessageBox(NULL,"", "",MB_OK) ;
 return 0;
}


 
tesseract ©   (2006-06-07 16:21) [9]

А до WinMain MessageBox вызвать нельзя?


 
Сергей М. ©   (2006-06-07 16:50) [10]


> которую оловить невозможно


И где ты ее "ловишь" ? Покажи ..


 
kapral   (2006-06-07 18:06) [11]

а catch (...) разве не ловит?
если нет, то подскажите как надо?


 
Сергей М. ©   (2006-06-08 08:15) [12]


> catch (...) разве не ловит?


У тебя MessageBox находится ВНЕ блока try..catch !

Ко всему прочему goto-переход в тело finally-блока недопустим.



Страницы: 1 вся ветка

Текущий архив: 2006.06.25;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.066 c
1-1147277774
swan
2006-05-10 20:16
2006.06.25
ПИД-регулирование


2-1149502986
новик
2006-06-05 14:23
2006.06.25
преобрпзование типов int64 в int


2-1149685074
AlexanderMS
2006-06-07 16:57
2006.06.25
Как хранится переменная типа String в памяти.


15-1148974453
Иксик
2006-05-30 11:34
2006.06.25
Протесты азербайджанцев в Иране


3-1146110130
Insane SPIRIT
2006-04-27 07:55
2006.06.25
После SQL-запроса Table1 недоступна!