Anfängerfrage: WINAPI
-
Weis net obs hier richtig ist, wenn net verschioebts halt, werdes schon finden.
Ich hab mir das Buch von Stefan Zerbst gekauft und alles so abgetippt wie beschrieben. Trotzdem bekomm ich die Fehler, die kommen, wenn man keine main Funktion eingefügt hat. Ich hab aber eine, hier mein Code:#define WIN32_LEAN_AND_MEAN #include <windows.h> MSG message; const char classn[] = "Mein erster Windooftest!"; HWND hwnd; LRESULT CALLBACK WindowProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam) { switch(message) { case WM_DESTROY: { PostQuitMessage(0); return(0); } default: break; } return(DefWindowProc(hwnd, message, wparam, lparam)); } int WINAPI Winmain(HINSTANCE hinstance,HINSTANCE hprevinst, LPSTR lpcmdline, int ncmdshow) { WNDCLASSEX myclass; myclass.cbSize = sizeof(WNDCLASSEX); myclass.style = CS_HREDRAW | CS_VREDRAW; myclass.lpfnWndProc = WindowProc; myclass.cbClsExtra = 0; myclass.cbWndExtra = 0; myclass.hInstance = hinstance; myclass.hIcon = LoadIcon(0, IDI_APPLICATION); myclass.hCursor = LoadCursor(0, IDC_ARROW); myclass.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH); myclass.lpszMenuName = 0; myclass.lpszClassName = classn; myclass.hIconSm = LoadIcon(0, IDI_APPLICATION); if (!RegisterClassEx(&myclass)) { return(0); } if(!(hwnd = CreateWindowEx(NULL, classn, "Windooftest!", WS_OVERLAPPED | WS_VISIBLE, 0,0, 400,300, 0, 0, hinstance, 0))) { return(0); } for(;;) { if(GetMessage(&message, 0,0,0)==true) { if(message.message == WM_QUIT) break; TranslateMessage(&message); DispatchMessage(&message); } } return(1); }
danke, Dumpf->I
-
Es wäre ganz Sinnvoll, wenn du uns erzählen würdest, welchen Compiler du benutzt. Dann könnten wir dir auch helfen. Ich denke du benutzt entweder einen 16 Bit Compiler oder musst ein flag setzen beim compilieren, damit ein Win32-Programm erstellt wird.
-
Ich benutze VC++
-
Am einfachsten ist es, du erstellst ein neues Projekt und wählst diesmal anstelle von Konsolen-Anwendung Win32-Anwendung aus
-
Aua
-
Würd' ich auch sagen...
-
Doch nicht ganz so Aua, ich hab ca. 5 Versuche unternommen ein neues WIN32 - Projekt anzulegen. Dann habe ich den Quellcode (s.o.) in eine neu erstellte CPP Datei kopiert und es ausgeführt, 2 Fehler??? Warum???
-
Achso, ja nochwas:
Kann auch sein, dass mein Computer (aml wieder) keinen Bock auf mich hat.
Gruß Dumpf->I
-
Versuch es mal mit WinMain.
-
Ich hab ein ähnliches Problem auf http://www.c-plusplus.net/forum/viewtopic.php?t=47094 gefunden, aber ich hab windows.h included.
Gruß
Dumpf->I
-
Dumpfie schrieb:
Doch nicht ganz so Aua, ich hab ca. 5 Versuche unternommen ein neues WIN32 - Projekt anzulegen. Dann habe ich den Quellcode (s.o.) in eine neu erstellte CPP Datei kopiert und es ausgeführt, 2 Fehler??? Warum???
Aha. Bei mir schreibt VC allerdings mehr in die Ausgabe als "2 Fehler", wenn zwei Fehler aufgetreten sind.
Vier Möglichkeiten:
1.) Du teilst sie uns freiwillig mit. (gute Idee)
2.) Du hörst endlich auf meinen Trojaner mit deinem Firewall zu blockieren, damit ich mitbekomme, was du da machst. (wäre eine tolle Idee)
3.) Du richtest die Webcam mal auf den Monitor, anstatt auf dein Gesicht. (wäre auch ganz brauchbar)
4.) Oder du kaufst mir endlich mal eine funktionstüchtige Glaskugel. (wäre auch nicht zu verachten die Idee)
-
Achso, WinMainm
Upps
@ Luckie: Ist zwar zu spät aber:
error LNK2001: Nichtaufgeloestes externes Symbol _WinMain@16
fatal error LNK1120: 1 unaufgeloeste externe VerweiseNochmal danke an alle, die sich mit meinem Problem außeinandergesetzt haben
Gruß
Dumpf->I
-
So viel spass beim lesen hatte ich nicht mehr seit mein erstes assembler win32 program geschrieben hatte
; ««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««« .486 .model flat, stdcall option casemap :none ; case sensitive ; ««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««« include \masm32\include\windows.inc include \masm32\include\user32.inc include \masm32\include\kernel32.inc include \masm32\include\gdi32.inc includelib \masm32\lib\user32.lib includelib \masm32\lib\kernel32.lib includelib \masm32\lib\gdi32.lib main PROTO ; --------------------- ; literal string MACRO ; --------------------- literal MACRO quoted_text:VARARG LOCAL local_text .data local_text db quoted_text,0 .code EXITM <local_text> ENDM ; -------------------------------- ; string address in INVOKE format ; -------------------------------- SADD MACRO quoted_text:VARARG EXITM <ADDR literal(quoted_text)> ENDM ; ««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««« .code start: call main invoke ExitProcess,0 ; ««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««« main proc invoke MessageBox,0,SADD("Blank Template in MASM32"),SADD("Greetings"),MB_OK ret main endp ; ««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««« end start