Форум: "Начинающим";
Текущий архив: 2006.06.25;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.009 c