ERLEDIGT
JA
JA
ANTWORTEN
5
5
ZUGRIFFE
927
927
EMPFEHLEN
-
11.03.08 22:42 #1
- Registriert seit
- Feb 2008
- Beiträge
- 522
Wunderschönen guten Abend Com!
Ich versuche mcih an der Windowsprogrammierung mit C (ich weiß, Linux usw ist viel besser, aber bitte lasst mal Kommentare in die Richtung
), aber Dev-C++ spuckt mir 2 Fehlermeldungen aus.
Ich habe keine Ahung wo der Fehler liegt, ich habe es 1:1 aus dem Buch (WindowsProgrammierung) übernommen.
Ich poste einfach mal den ganzen Code, da ich denke, das euch die 2 Zeilen nicht weiterhelfen werden
Code cpp:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
#include <windows.h> LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM); int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow) { static TCHAR szAppName[] = TEXT("HelloWin"); HWND hwnd; MSG msg; WNDCLASS wndclass; wndclass.style = CS_HREDRAW | CS_VREDRAW; wndclass.lpfnWndProc = WndProc; wndclass.cbClsExtra = 0; wndclass.cbWndExtra = 0; wndclass.hInstance = hInstance; wndclass.hIcon = LoadIcon(NULL, IDI_APPLICATION); wndclass.hCursor = LoadCursor(NULL, IDC_ARROW); wndclass.hbrBackground = (HBRUSH) GetStockObject(WHITE_BRUSH); //Einmal hier wndclass.lpszMenuName = NULL; wndclass.lpszClassName = szAppName; if (!RegisterClass(&wndclass)) { MessageBox(NULL,TEXT("Programm arbeitet mit Unicode und setzt Windows NT voraus!"),szAppName, MB_OK|MB_ICONERROR); return 0; } hwnd = CreateWindow( szAppName, TEXT("Das erste echte Programm"), WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL ); ShowWindow(hwnd, iCmdShow); UpdateWindow(hwnd); while (GetMessage(&msg, NULL,0,0)) { TranslateMessage(&msg); DispatchMessage(&msg); return msg.wParam; } } LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { HDC hdc; PAINTSTRUCT ps; RECT rect; switch (message) { case WM_CREATE: PlaySound("D:\Eigene Musik/Spit it out",NULL,SND_FILENAME|SND_ASYNC); //Einmal da return 0; case WM_PAINT: hdc = BeginPaint (hwnd,&ps); GetClientRect(hwnd,&rect); DrawText (hdc, TEXT("Hello, Window XP!"), -1, &rect, DT_SINGLELINE | DT_VCENTER); EndPaint(hwnd, &ps); return 0; case WM_DESTROY: PostQuitMessage(0); return 0; } return DefWindowProc(hwnd, message, wParam, lParam); }
-
"The three chief virtues of a programmer are: Laziness, Impatience and Hubris."
--- Larry Wall
-
12.03.08 10:06 #3
- Registriert seit
- Feb 2008
- Beiträge
- 522
Hi,
Mist, hab ich wohl vergessen zu posten
Das war einmal zu GetStockObject und PlaySound (siehe Source).
Ich habe das Problem inzwischen zu 50% gelöst.
Ich hatte shlicht und einfach veregssen das ganze in eine Windows Application zu speichern :-[
Damit ging der GetStockObject Fehler schon mal weg. Das Playsound habe ich einfach herausgenommen.
Mein Problem jetzt: Das Fenster schließt sich unmittelbar nach der initialisierung -.-
Es wird auch nur eine *.o Datei gespeichert, aber keine *.exe...
Das Ganze wird ohne Fehlermeldung/Warnung etc kompiliert, es öffnet sich lediglich und schließt sich nach einem SekundenbruchteilCode cpp:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
#include <windows.h> LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM); int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow) { static TCHAR szAppName[] = TEXT("HelloWin"); HWND hwnd; MSG msg; WNDCLASS wndclass; wndclass.style = CS_HREDRAW | CS_VREDRAW; wndclass.lpfnWndProc = WndProc; wndclass.cbClsExtra = 0; wndclass.cbWndExtra = 0; wndclass.hInstance = hInstance; wndclass.hIcon = LoadIcon(NULL, IDI_APPLICATION); wndclass.hCursor = LoadCursor(NULL, IDC_ARROW); wndclass.hbrBackground = (HBRUSH) GetStockObject(BLACK_BRUSH); wndclass.lpszMenuName = NULL; wndclass.lpszClassName = szAppName; if (!RegisterClass(&wndclass)) { MessageBox(NULL,TEXT("Programm arbeitet mit Unicode und setzt Windows NT voraus!"),szAppName, MB_OK|MB_ICONERROR); return 0; } hwnd = CreateWindow( szAppName, TEXT("Das erste echte Programm"), WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL ); ShowWindow(hwnd, iCmdShow); UpdateWindow(hwnd); while (GetMessage(&msg, NULL,0,0)) { TranslateMessage(&msg); DispatchMessage(&msg); return msg.wParam; } } LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { HDC hdc; PAINTSTRUCT ps; RECT rect; switch (message) { case WM_DESTROY: PostQuitMessage (0); break; default: return DefWindowProc(hwnd, message, wParam, lParam); } return 0; }
-
Sehr unwahrscheinlich, denn dann würde das Programm auch nicht kurz aufblitzen. Die EXE liegt wahrscheinlich in einem anderen Verzeichnis (ich kenne mich mit Dev C++ nicht aus).
Was deinen Code betrifft: Du springst ja aus der Message-Loop gleich wieder heraus. Damit ist das Programm natürlich gleich beendet.
Das sollte eher so aussehen:
GrußCode cpp:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
... int nRet; MSG msg; while( (nRet = GetMessage(&msg, NULL, 0, 0)) != 0 ) { if( nRet == (-1) ) { break; } else { TranslateMessage(&msg); DispatchMessage(&msg); } } return 0;
MCoder"The three chief virtues of a programmer are: Laziness, Impatience and Hubris."
--- Larry Wall
-
12.03.08 22:17 #5
- Registriert seit
- Feb 2008
- Beiträge
- 522
Danke,
bis auf die *.exe funktioniert jetzt alles =)
Kannst du vllt noch erklären, was der Teil macht?
-
Das ist schwer vorstellbar. Ohne .exe sollte gar nichts laufen. Da musst du vielleicht noch mal suchen

Das gibt's eigentlich nicht viel zu erklären. Das ist eine Endlosschleife, die die Windows-Messages für deine Applikation einsammelt (GetMessage) und an die Callback-Funktion weiterreicht (TranslateMessage, DispatchMessage).
Gruß
MCoder"The three chief virtues of a programmer are: Laziness, Impatience and Hubris."
--- Larry Wall
Ähnliche Themen
-
undefined reference to
Von hintermair im Forum C/C++Antworten: 5Letzter Beitrag: 27.04.09, 14:30 -
[Linker error] undefined reference to `prinftf'
Von satyja im Forum C/C++Antworten: 2Letzter Beitrag: 12.04.05, 13:00 -
[Linker error] undefined reference to ....
Von Katzenbauer im Forum C/C++Antworten: 4Letzter Beitrag: 09.02.05, 22:38 -
cygwin linker "undefined reference"
Von freddy23 im Forum C/C++Antworten: 4Letzter Beitrag: 22.10.04, 23:06 -
[Linker Error] undefined reference to..
Von srpcool im Forum C/C++Antworten: 3Letzter Beitrag: 07.04.04, 22:51





Zitieren

Login





