Различие между WinMain и wWinMain

Независимо от того, был ли блок скомпилирован как сборка конечных версий, исключение должно, конечно, 'пузыриться' до вызывающей стороны, нет никакой причины, блок, не скомпилированный в режиме отладки, должен иметь любое влияние на этом.

я согласился бы с Daniel, предполагает, что, возможно, исключение происходит на отдельном потоке - пытаются сцепить событие исключения потока в Приложении. ThreadException. Это должно быть повышено, когда любое необработанное исключение потока происходит. Вы могли адаптировать свой thus:-

using System.Threading;

...

void Application_ThreadException(object sender, ThreadExceptionEventArgs e) {
  throw new ParserException(e.Exception.Message, e.Exception);
}    

 ...

 var exceptionHandler = 
    new ThreadExceptionEventHandler(Application_ThreadException);
 Application.ThreadException += exceptionHandler;
 try {
    // Execution stopped at parser.prog()
    TimeDefParser.prog_return prog_ret = parser.prog();
    return prog_ret == null ? null : prog_ret.value;
 }
 catch (Exception ex) {
    throw new ParserException(ex.Message, ex);
 }
 finally {
    Application.ThreadException -= exceptionHandler;
 }
кода
20
задан sorin 18 April 2010 в 22:20
поделиться

2 ответа

В Windows XP, если запись приложения - WinMain, конвертирует ли Windows командную строку из Unicode в Ansi и передает ли это приложению?

Да.

Если параметр командной строки должен быть в Unicode (например, имя файла Unicode, преобразование приведет к отсутствию некоторых символов), означает ли это, что я должен использовать wWinMain в качестве функции ввода?

Да, вам следует, если вы хотите правильно обрабатывать аргументы Unicode для ваша программа.

Документация к WinMain () в MSDN также согласна с этим.

Однако вы также можете использовать GetCommandLineW для получения командной строки специально в Unicode.

14
ответ дан 30 November 2019 в 01:20
поделиться

Начиная с версии Windows XP по умолчанию используется Unicode! Таким образом, преобразование не требуется. Загрузчик среды выполнения C ++ заботится о передаче аргументов приложению. Стандартный Win32 API требует, чтобы основной записью было WinMain (...).

0
ответ дан 30 November 2019 в 01:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: