Hi,
im Moment mache ich ein Tut zur Windows API. Das Tut scheint beliebt zu sein. Ich bin im zweiten Kapitel und hab ein Problem (ja jetzt schon):
Der Quelltext lässt sich super compilen und ausführen. Laut Taskmanager arbeitet die exe dann auch aber das Fenster wird nicht gezeichnet.
Rene42
im Moment mache ich ein Tut zur Windows API. Das Tut scheint beliebt zu sein. Ich bin im zweiten Kapitel und hab ein Problem (ja jetzt schon):
Der Quelltext lässt sich super compilen und ausführen. Laut Taskmanager arbeitet die exe dann auch aber das Fenster wird nicht gezeichnet.
PHP:
#define STRICT
#include <windows.h>
//Schon einmal die Funktion definieren, die später Ereignisse im Windowsfenster bearbeitet
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
//Den Namen des Fensters speichern
const char szAppName[] = "Ein eigenes Fenster";
//Wieder die WinMain Funktion verwenden
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
PSTR szCmdLine, int iCmdShow)
{
HWND hWnd;
//Die Instanz der Fensterklasse
WNDCLASS wc;
//Variabel fängt Ereignisse ab
MSG msg;
//Keinen Extraspeicher reservieren
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
//Damit das Programm auch diese Fenster verwendet
wc.hInstance = hInstance;
//Bestimmt wie der Cursor aussieht, bei NULL wird kein Cursor gezeigt
wc.hCursor = LoadCursor(NULL,IDC_ARROW);
//Bestimmt das Icon
wc.hIcon = LoadIcon(NULL,IDI_APPLICATION);
//definiert die Farbe des Hintergrunds
wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
//Hier den Namen des Fensters festlegen
wc.lpszClassName = szAppName;
//Kein Menü, später kann hier ausgeählt werden welches Menü das Fenster bekommt
wc.lpszMenuName = NULL;
//Die Classe registrieren
RegisterClass(&wc);
//Hier wird das Window erst richtig erzeugt
hWnd = CreateWindow(szAppName, // Name des Fensters
"Titelleiste", // Titel des Fensters
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, /* X-Position auf dem Monitor */
CW_USEDEFAULT, /* Y-Position auf dem Monitor */
CW_USEDEFAULT, /* Fensterbreite */
CW_USEDEFAULT, /* Fensterhoehe */
NULL,
NULL,
hInstance, //Richtige Instanz wählen
NULL);
//Zeigt das Fenster an
ShowWindow(hWnd, iCmdShow);
//Zeichnet das Fenster neu
UpdateWindow(hWnd);
//Bearbeite hier nun die Nachrichten
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
//Jetzt wird ResultBack definiert
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_DESTROY:
{
PostQuitMessage(0);
return 0;
}
return DefWindowProc(hWnd, message, wParam, lParam);
}
}
Rene42