Witam
Chciałbym zadać dosyć "głupie" pytanie dotyczące uzupełniania okien w WinApi. Oto mój dotychczasowy kod:
#include <windows.h>
#include <iostream>
LPCSTR szClassName = "Moje okno Windows";
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam); // definicja zostanie dodana poźniej
MSG msg;
int WINAPI WinMain(HINSTANCE hInst, HINSTANCE vPrevINSTANCE, LPSTR lpszCmdLine, int nCmdShow)
{
WNDCLASSEX winClass; // zmienna rekordowa
HWND hWndMain;
// uzupełnienie danych okna na bazie zmiennych struktury !
winClass.cbSize = sizeof(WNDCLASSEX);
winClass.cbClsExtra = 0;
winClass.cbWndExtra = 0;
winClass.hInstance = hInst;
winClass.lpszClassName = szClassName;
winClass.lpszMenuName = NULL;
winClass.hCursor = LoadCursor(NULL, IDC_WAIT); // kursorem będzie klepsydra (niech czeka, zastosowanie malipulacji)
winClass.hIcon = LoadIcon(NULL, IDI_APPLICATION);
winClass.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
winClass.hbrBackground = (HBRUSH)(COLOR_3DSHADOW + 1);
winClass.style = CS_HREDRAW | CS_VREDRAW; // zmiana rozmiarów okna w pionie i poziomie
winClass.lpfnWndProc = WndProc; // (wskaźnik na procedurę okna), odpowiedzialny za obsługę komunikatówdef
if (!RegisterClassEx(&winClass))
{
MessageBox(NULL, "Błąd rejestracji okna", "Komunikat", MB_OK | MB_ICONEXCLAMATION);
}
hWndMain = CreateWindowEx(
WS_EX_CLIENTEDGE,
szClassName,
"Okno glowne",
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
300, 200,
NULL,
NULL,
hInst,
NULL);
ShowWindow(hWndMain, nCmdShow);
UpdateWindow(hWndMain);
//Rezultatem funkcji GetMessage jest wartość 0 jeżeli z kolejki pobrany został komunikat WM_QUIT.Rezultat o wartości - 1 oznacza błąd.
while (GetMessage(&msg, NULL, 0, 0) > 0)
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
//InvalidateRect(hWndMain, NULL, FALSE);
//SetWindowText( hWndMain, szClassName);
return msg.wParam;
system("pause");
return 0;
}
LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch (msg)
{
case WM_CLOSE:
DestroyWindow(hWnd);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default: return DefWindowProc(hWnd, msg, wParam, lParam);
}
return 0;
}
Powoduje wywołanie pustego okna z nowoczesną ramką windowsa. Jednak chciałbym uzupełnić jego zawartość o tekst, bądź obraz (np. jpeg). Jednak nie wiem gdzie miałbym umieścić te dane jako dodatkowa funkcja czy w inny sposób? Robię to pierwszy raz, a informacje dotyczą zazwyczaj tworzenia okna a nie jego uzupełnienia o dodatkowe elementy.
Moje pytania to:
1. Jakich funkcji powinienem użyć chcąc dodać informacje do okna w VS ?
2. Czy wystarczy wrzucić dodatkową funkcję do "int WINAPI WinMain(...)" ?