void showErrorW()

in src/main/cpp/launcher/windows/src/Main.c [216:262]


void showErrorW(LauncherProperties * props, const char * error, const DWORD varArgsNumber, ...) {
    
    WCHAR * errorTitle = NULL;
    WCHAR * errorMessage = NULL;
    DWORD  totalLength = 0;
    DWORD counter=0;
    WCHAR * result = NULL;
    va_list ap;
    
    getI18nPropertyTitleDetail(props, error, & errorTitle, &errorMessage);
    totalLength=getLengthW(errorMessage);
    
    va_start(ap, varArgsNumber);
    
    while((counter++)<varArgsNumber) {
        WCHAR * arg = va_arg( ap, WCHAR * );
        totalLength+=getLengthW(arg);
    }
    va_end(ap);
    result = newpWCHAR(totalLength + 1);
    va_start(ap, varArgsNumber);
    if(errorMessage!=NULL) {
        wvsprintfW(result, errorMessage, ap);
    }
    va_end(ap);
    
    if(!isSilent(props)) {
        HANDLE * events = (HANDLE *) LocalAlloc(LPTR, sizeof(HANDLE)*2);
        
        hide(props, hwndProgressTitle);
        hide(props, hwndPB);
        setErrorDetailString(props, result);
        setErrorTitleString(props, errorTitle);
        setButtonString(props, getI18nProperty(props, EXIT_BUTTON_PROP));
        show(props, hwndErrorDetail);
        show(props, hwndErrorTitle);
        show(props, hwndButton);
        
        events[0] = buttonPressed;
        events[1] = closingWindowsRequired;
        WaitForMultipleObjects(2, events, FALSE, INFINITE);
        FREE(events);
    }
    FREE(result);
    FREE(errorTitle);
    FREE(errorMessage);
}