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;
}
powinno być
// 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)