WinMain

no_solution_found

WinMain

WinMain funkcja główna każdej okienkowej aplikacji. Jej składnie jest następująca:

int WINAPI WinMain(

   HINSTANCE hInstance,	// uchwyt do aktualnego okna instance
 hPrevInstance hPrevInstance,	// handle to previous instance
   LPSTR lpCmdLine,	// pointer to command line
   int nCmdShow 	// show state of window
);

Ta funkcja przyjmuje następujące 4 argumenty:

hInstance – typu HINSTANCE – jest to uchwyt do naszego okna

hPrevInstance – typu hPrevInstance – to również jest uchwyt ale do poprzedniej instalacji; jest nieużywany więc można o nim praktycznie zapomnieć

lpCmdLine – typu LPSTR – jest to łańcuch znaków. Gdy chcemy uruchomić nasz program z argumentami to właśnie poprzez ten łańcuch możemy się do nich „dobrać”. Przykładem czegoś takiego jest np. ping –a –s XXX.XXX.XXX.XXX , gdzie X to adres IP komputera.

NCmdShow – typu int (liczba całkowita) – od niej zależeć będzie czy okno ma zostać np. zminimalizowane czy maksymalizowane mówiąc w skrócie sposób wyświetlania okna.


Przykładem zastosowanie tej funkcji zamieszczam poniżej (wygenerowane przez Dev-C++):
int WINAPI WinMain (HINSTANCE hThisInstance,
                    HINSTANCE hPrevInstance,
                    LPSTR lpszArgument,
                    int nFunsterStil)

{
    HWND hwnd;               /* This is the handle for our window */
    MSG messages;            /* Here messages to the application are saved */
    WNDCLASSEX wincl;        /* Data structure for the windowclass */
//...
/* Run the message loop. It will run until GetMessage() returns 0 */
    while (GetMessage (&messages, NULL, 0, 0))
    {
        /* Translate virtual-key messages into character messages */
        TranslateMessage(&messages);
        /* Send message to WindowProcedure */
        DispatchMessage(&messages);
    }

    /* The program return-value is 0 - The value that PostQuitMessage() gave */
    return messages.wParam;
}

1 komentarz

int WINAPI WinMain(

   HINSTANCE hInstance,	// uchwyt do aktualnego okna instance
 hPrevInstance hPrevInstance,	// handle to previous instance
   LPSTR lpCmdLine,	// pointer to command line
   int nCmdShow 	// show state of window
);

powinno być

int WINAPI WinMain(

   HINSTANCE hInstance,	// handle to current instance
   HINSTANCE hPrevInstance,	// handle to previous instance
   LPSTR lpCmdLine,	// pointer to command line
   int nCmdShow 	// show state of window
);

// hInstance – typu HINSTANCE – jest to uchwyt do naszego okna

to jest uchwyt identyfikujący instancję aplikacji

// hPrevInstance – typu hPrevInstance – to również jest uchwyt ale do poprzedniej instalacji;
// jest nieużywany więc można o nim praktycznie zapomnieć

chyba do poprzedniej instancji, i nie typu hPrevInstance tylko typu HINSTANCE

// lpCmdLine – typu LPSTR – jest to łańcuch znaków.

to jest wskaźnik na łańcuch znaków (LP = Long Pointer)