Ich arbeite mich gerade in die Win32 API ein und habe mir selbst aus Tutorials ein Beispiel gebastelt und dies hier kam raus.
c Code:
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
LPCSTR lpszAppName = TEXT("AppName");
LPCSTR lpszTitle = TEXT("Buttons");
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
PSTR szCmdLine, int iCmdShow)
{
HWND hWnd;
MSG msg;
WNDCLASSEX wc;
wc.cbSize = sizeof(WNDCLASSEX);
wc.style = CS_HREDRAW | CS_VREDRAW;
wc.lpfnWndProc = WndProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hInstance;
wc.hCursor = LoadCursor(NULL,IDC_ARROW);
wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
wc.lpszClassName = lpszAppName;
wc.lpszMenuName = lpszAppName;
wc.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
if( RegisterClassEx(&wc) == 0)
return 0;
hWnd = CreateWindowEx(WS_EX_OVERLAPPEDWINDOW,
lpszAppName,
lpszTitle,
WS_OVERLAPPEDWINDOW,
0,
0,
CW_USEDEFAULT,
CW_USEDEFAULT,
NULL,
NULL,
hInstance,
NULL);
if( hWnd == NULL)
return 0;
ShowWindow(hWnd, iCmdShow);
UpdateWindow(hWnd);
while (GetMessage(&msg, NULL, 0, 0) > 0)
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
LRESULT CALLBACK WndProc(HWND hWnd, UINT umsg, WPARAM wParam, LPARAM lParam)
{
static HWND hButton;
switch (umsg)
{
case WM_CREATE:
{
hButton = CreateWindow( "BUTTON",
"Klick mich!",
WS_CHILD | WS_VISIBLE,
0, 0, 0, 0,
hWnd,
NULL,
((LPCREATESTRUCT) lParam) -> hInstance,
NULL);
return 0;
}
case WM_SIZE:
{
MoveWindow(hButton, 0, 0, LOWORD(lParam), HIWORD(lParam), TRUE);
return 0;
}
case WM_COMMAND:
{
if (lParam == (LPARAM)hButton)
{
if (HIWORD(wParam) == BN_CLICKED)
SetWindowText(hButton, "Autsch!");
}
return 0;
}
case WM_DESTROY:
{
PostQuitMessage(0);
return 0;
}
}
return DefWindowProc(hWnd, umsg, wParam, lParam);
}```
Es funktioniert wie gewollt, aber ich finde es sieht aus als wäre es noch von Windows 2000. Gibt es irgendeine Methode mit der man Buttons im Windows style bekommen kan. Danke schon im Vorraus.
Gruss,
Freak