Temat: WinApi
#include <windows.h>
LPSTR NazwaKlasy = "Klasa Okienka";
MSG Komunikat;
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam);
HWND g_hPrzycisk;
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
//WYPEŁNIANIE STRUKTURY
WNDCLASSEX wc;
wc.cbSize = sizeof(WNDCLASSEX);
wc.style = 0;
wc.lpfnWndProc = WndProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hInstance;
wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
wc.lpszMenuName = NULL;
wc.lpszClassName = NazwaKlasy;
wc.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
//REJESTROWANIE KLASY OKNA
if(!RegisterClassEx(&wc))
{
MessageBox(NULL, "ERROR", "Nieudana rejestracja okna", MB_ICONEXCLAMATION | MB_OK);
return 1;
}
//TWORZENIE OKNA
HWND hwnd;
hwnd = CreateWindowEx(WS_EX_CLIENTEDGE, NazwaKlasy, "Oto okienko", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 500, 300, NULL, NULL, hInstance, NULL);
int x = 10;
int y = 10;
//itoa(i)
for (int i = 1; i <= 15; i++){
g_hPrzycisk = CreateWindowEx(0, "BUTTON", "1", WS_CHILD | WS_VISIBLE, x, y, 30, 30, hwnd, NULL, hInstance, NULL);
x = x+30;
if (x==130){
x = 10;
y = y + 30;
}
}
g_hPrzycisk = CreateWindowEx(0, "BUTTON", NULL, WS_CHILD | WS_VISIBLE, x, y, 30, 30, hwnd, NULL, hInstance, NULL);
if(hwnd==NULL)
{
MessageBox(NULL, "ERROR", "Nieoczekiwany błąd", MB_ICONEXCLAMATION);
return 1;
}
ShowWindow(hwnd, nCmdShow); //Pokaż okienko...
UpdateWindow(hwnd);
//Pętla komunikatów
while(GetMessage(&Komunikat, NULL, 0, 0))
{
TranslateMessage(&Komunikat);
DispatchMessage(&Komunikat);
}
return Komunikat.wParam;
}
//OBSŁUGA ZDARZEŃ
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;
}
Sorry, że dopiero teraz. Trochę mi zajęło, zanim to ogarnąłem. Mam takie pytania co do tego kodu:
1) Jak zrobić, żeby przycisk się nazywał (obecnie nazywają sie 1) tak, jaką wartość ma obecnie i?
2) Jak zrobić reakcję programu na przyciski? :/ O tym czytałem, coś tam, że generuje się jakieś WM_COMMAND, ale niestety nie ogarniam tego i nie wiem o co chodzi :/
3) Przy okazji...jak zrobić z tego "kod"?
Maciej Radzki edytował(a) ten post dnia 28.01.08 o godzinie 15:07