Hallo werte Mitstreiter,
nachdem ich es nun nach langem Mühen geschafft habe, ein Windows-Programm fehlerfrei zu kompilieren, linken, auszufürhren und ein Fenster zu erzeugen, bleibt die unschöne Eigenart, dass dies zwar aus der IDE korrekt arbeitet, beim Direktaufruf der .exe-Datei aber immer neben-(oder wohl vor-)her ein Dos-Fenster öffnet.
Und allerlei Suchen mit diversen Begriffen hat mich der Lösung nicht näher gebracht.
Ich arbeite unter Netbeans-IDE mit dem Cygwin-C/C+±Compiler. Das Codebeispiel ist in vielen Tutorials verbreitet, also enthält nicht besonderes. Ist übrigens egal, ob ich es als .c oder .cpp erstelle. Hier der Code:
#include \<windows.h\>
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
int WINAPI WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow) {
HICON myIcon = (HICON) LoadImage(NULL, "C:\\ping\\pong.ico", IMAGE\_ICON, 16, 16, LR\_LOADFROMFILE);
char szName[] = "Fensterklasse";
WNDCLASS wc;
wc.style = CS\_HREDRAW | CS\_VREDRAW;
wc.lpfnWndProc = WndProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hInstance;
wc.hIcon = myIcon; //LoadIcon(NULL, IDI\_INFORMATION);
wc.hCursor = LoadCursor(NULL, IDC\_ARROW);
wc.hbrBackground = (HBRUSH) (COLOR\_WINDOW + 1); /\* NULL; \*/ /\* (HBRUSH) GetStockObject (BLACK\_BRUSH); \*/
wc.lpszMenuName = NULL;
wc.lpszClassName = szName;
RegisterClass(&wc);
HWND hwnd = CreateWindowEx(0,
szName,
"Fenster-Überschrift",
WS\_SYSMENU | WS\_THICKFRAME | WS\_MINIMIZEBOX | WS\_MAXIMIZEBOX,
100,
100,
400,
200,
HWND\_DESKTOP,
NULL,
hInstance,
NULL);
ShowWindow(hwnd, nCmdShow);
UpdateWindow(hwnd);
/\* Nachrichten-Schleife \*/
MSG msg;
while (GetMessage(&msg, NULL, 0, 0)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
/\* Windows-Nachrichten-Prozedur \*/
LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) {
HDC hdc;
PAINTSTRUCT ps;
switch (message) {
case WM\_PAINT:
hdc = BeginPaint(hwnd, &ps);
TextOut(hdc, 30, 60, "Fensterinhalt", 13);
EndPaint(hwnd, &ps);
return 0;
case WM\_DESTROY:
PostQuitMessage(0);
return 0;
}
return DefWindowProc(hwnd, message, wParam, lParam);
}
Code-Formatierung krieg ich leider nicht hin.
Dank für eure Mühe, Zoelomat