Error beim Fenster erzeugen!



  • Hi Leute bin Neu hier!
    Ich hoffe, dass die Frage nich allzu blöd ist^^ und Ich hier im richtigen Forum bin xD

    Also Ich hab mir so ein Buch gekauft um Visual C++ zu lernen und versuche jetzt ein simples Fenster zu erzeugen:

    #include <windows.h>
    
    LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
    
    int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow)
    {
    	WNDCLASS WndClass;
    		WndClass.style=0;
    		WndClass.cbClsExtra=0;
    		WndClass.cbWndExtra=0;
    		WndClass.lpfnWndProc=WndProc;
    		WndClass.hInstance=hInstance;
    		WndClass.hbrBackground=(HBRUSH)(COLOR_WINDOW+1);
    		WndClass.hCursor=0;
    		WndClass.hIcon=0;
    		WndClass.lpszMenuName=0;
    		WndClass.lpszClassName="WinProg";
    
    	RegisterClass(&WndClass);
    
    	HWND hWindow;
    	hWindow=CreateWindow("WinProg","Test",WS_OVERLAPPEDWINDOW,0,0,400,400,NULL,NULL,hInstance,NULL);
    
    	ShowWindow(hWindow,nCmdShow);
    	UpdateWindow(hWindow);
    
    	MSG Message;
    
    	while(GetMessage(&Message,NULL,0,0))
    	{
    		DispatchMessage(&Message);
    	}
    
    	return (Message.wParam);
    
    }
    
    LRESULT CALLBACK WndProc (HWND hWnd,UINT uiMessage,WPARAM wParam,LPARAM lParam)
    {
    	switch(uiMessage)
    	{
    		case WM_DESTROY:
    			PostQuitMessage(0);
    			return 0;
    		default:
    			return DefWindowProc (hWnd,uiMessage,wParam,lParam);
    	}
    }
    

    Jetzt kommt aber diese Fehlermeldung(en):

    1>------ Erstellen gestartet: Projekt: Fenster, Konfiguration: Debug Win32 ------
    1>Kompilieren...
    1>Fenster erzeugen.cpp
    1>d:\c++ dateien\fenster\fenster\fenster erzeugen.cpp(17) : error C2440: '=': 'const char [8]' kann nicht in 'LPCWSTR' konvertiert werden
    1> Die Typen, auf die verwiesen wird, sind nicht verknüpft; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat.
    1>d:\c++ dateien\fenster\fenster\fenster erzeugen.cpp(22) : error C2664: 'CreateWindowExW': Konvertierung des Parameters 2 von 'const char [8]' in 'LPCWSTR' nicht möglich
    1> Die Typen, auf die verwiesen wird, sind nicht verknüpft; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat.
    1>Das Buildprotokoll wurde unter "file://d:\C++ Dateien\Fenster\Fenster\Debug\BuildLog.htm" gespeichert.
    1>Fenster - 2 Fehler, 0 Warnung(en)
    ========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========

    Ich hoffe sehr Ihr könnt mir helfen ich verzweifle bald...
    PS: ich habe Windows Vista und unter Visual c++ 6 Autorenversion gab es Kompatiblitätsprobleme...

    MFG Mr. BigGeLs



  • Das Problem ist, dass du in den Projekteigenschaften auf die Unicode-Umgebung geschaltet hast, aber Ascii-Strings verwendest. Benutze _T("text hier") oder L"text hier".



  • Decimad schrieb:

    Benutze _T("text hier") oder L"text hier".

    Danke erstmal für die schnelle Antwort, aber wie schon erwähnt bin ich absoluter Neuling.
    Also bitte nicht böhse sein aber könntest du mir vllt dann den richitgen quellcode bzw. quellcodeabschnitt schreiben?
    Oder wie muss ich ein projekt erstellen, damit der quellcode von mir ohne errors abläuft ?

    Ich hoffe hier lacht niemand über mich xD
    MFG Mr. BigGeLs



  • Mach überall wo oben in deinem Code roter Text angezeigt wird ein _T(..) drum.
    Oder stelle in den Projekteigenschaften den Zeichensatz/ das Charset von Unicode auf MBCS um (nicht zu empfehlen aber zum lernen okay). Aber eigentlich hat Decimand das schon beschrieben 🤡



  • Also ....
    Ich finds echt klasse,dass ihr hier nicht lacht aber ich hab jetzt mal auf MBCS gestellt und nun kam die folgende fehlermeldung (kam bei verwendung von _T("") auch):

    1>------ Erstellen gestartet: Projekt: Fenster, Konfiguration: Debug Win32 ------
    1>Verknüpfen...
    1>MSVCRTD.lib(crtexe.obj) : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_main" in Funktion "___tmainCRTStartup".
    1>D:\C++ Dateien\Fenster\Debug\Fenster.exe : fatal error LNK1120: 1 nicht aufgelöste externe Verweise.
    1>Das Buildprotokoll wurde unter "file://d:\C++ Dateien\Fenster\Fenster\Debug\BuildLog.htm" gespeichert.
    1>Fenster - 2 Fehler, 0 Warnung(en)
    ========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========
    

    also ich hab echt keine ahnung was der von mir will auf meinem alten pc (windows xp) gieng das programm...???!?

    liegt es immernich an dem "text" ??
    MFG Mr. BigGeLs


  • Mod

    Der letzte Linker Fehler bedeutet, dass Du den Linke angwiesen hast ein ConsolenProgramm zu bauen und kein Windows Porgramm. Stelle das Projekt auf ein Windows Programm um.

    Sie Subsystem Option
    http://msdn.microsoft.com/en-us/library/fcc1zstk(vs.71).aspx


Anmelden zum Antworten