// Borland bcc32 tego programu nie skompiluje...

#include <windows.h>

int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
                    PSTR szCmdLine, int iCmdShow)
{
    const char nazwa_okna [] = "Uruchamiacz aplikacji";

    int ok = MessageBoxEx( NULL, 
        "Czy odrobiłeś zadania domowe?", nazwa_okna, 
        MB_YESNO | MB_ICONQUESTION , 0 ); 

    if (ok != IDYES) 
        return 1;        // RETURN

    // przygotowujemy sie do otworzenia programu 
    // najpierw definiujemy kilka napisow
    const int rozmiar_bufora = 512;
    char nazwa_pliku [rozmiar_bufora] = "index.html";
    const char filtr[] = "pliki HTML\0*.html\0Post Script\0*.ps\0Pliki PDF\0*.pdf\0";
    
    OPENFILENAME ofn = {0};
    ofn.lStructSize = sizeof(OPENFILENAME);
    ofn.hInstance = hInstance;
    ofn.lpstrFilter = filtr;                    // filtr plikow
    ofn.lpstrFile = nazwa_pliku;                // tu bedzie wpisany nasz wybór
    ofn.nMaxFile = rozmiar_bufora - 1;             
    ofn.lpstrInitialDir = "d:\\";               // katalog poczatkowy
    ofn.nFilterIndex = 1;                       // tu: 1 = HTML, 2 = PS, 3 = PDF
    ofn.lpstrTitle = "Otwórz plik HTML, PS lub PDF"; // tytul okienka
    
    if ( !GetOpenFileName (&ofn) ) // otwieramy okienko "Otworz"
    {
        int error = CommDlgExtendedError();
        if (error != 0)
        {
            char buffer[256];
            wsprintf(buffer, "Błąd otwarcia okna dialogowego (nr %d)", error);
            MessageBox(NULL, buffer, nazwa_okna, MB_OK | MB_ICONWARNING);
        }
        return 2;
    }
    
    HINSTANCE hinst = ShellExecute(NULL, "open", nazwa_pliku, NULL, NULL, SW_SHOWNORMAL);
    
    if (!hinst)
    {
        char bufor[256];
        wsprintf(bufor, "próba otworzenia pliku '%s' nie powiodła sie!\0", nazwa_pliku);
        MessageBoxEx( NULL, bufor, nazwa_okna, MB_OK | MB_ICONINFORMATION,0 ); 
    }
    return 0;
}
