winGUI mit Dev-C++

FingerSkill

Erfahrenes Mitglied
hoi,
ich bin grad seit 1-2 monaten beschaeftigt c++ zu lernen habe mir deswegen zwei buecher gekauft. "Das C/C++ Kompendium von Markt & Technik" lese ich gerade und nachdem ich mich hauptsaechlich fuer winGUI programmierung interresiere hab ich das kapitel natuerlich gleich mal durchgelesen. jedoch habe ich folgendes problem, ich arbeite mit Dev-C++ 4.9.9.2, und habe aus dem buch folgenen source code:

Code:
// API.cpp : Ein Windows-Programm.
//

#include <windows.h>

// Vorwärtsdeklaration 
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);

// Eintrittsfunktion, die Argumente werden von Windows an 
// die Funktion übergeben
int APIENTRY WinMain(  HINSTANCE hInstance,
                                                  HINSTANCE hPrevInstance,
                                                  LPSTR     lpCmdLine,
                                                  int       nCmdShow )
{
 	// ZU ERLEDIGEN: Fügen Sie hier den Code ein.

   HWND             hWindow;          // Fenster-Handle
   MSG                 Message;         // Strukturvariable für Nachrichten
   WNDCLASS  WinClass;         // Fensterklasse

   // erste Instanz
   memset(&WinClass,0,sizeof(WNDCLASS));
   WinClass.style = CS_HREDRAW | CS_VREDRAW;
   WinClass.lpfnWndProc = WndProc;
   WinClass.hInstance = hInstance;
   WinClass.hbrBackground = (HBRUSH) (COLOR_WINDOW+1);
   WinClass.hCursor = LoadCursor(NULL, IDC_ARROW);
   WinClass.lpszClassName = "Windows-Programm";

   // Fensterklasse anmelden
   if(!RegisterClass(&WinClass))
      return(FALSE);

   // erstelle Hauptfenster der Anwendung
   hWindow = CreateWindow("Windows-Programm",
                         "API-Programm",
                         WS_OVERLAPPEDWINDOW, 10, 10,
                         400,300,NULL,NULL,hInstance,NULL);
   ShowWindow(hWindow, nCmdShow);
   UpdateWindow(hWindow);

   // Message loop
   while (GetMessage (&Message, NULL, 0, 0) )
      {
      TranslateMessage(&Message);
      DispatchMessage(&Message);
      }

   return (Message.wParam);
   }


// Fensterfunktion WinProcedure
LRESULT CALLBACK WndProc(HWND hWnd, UINT uiMessage,
                              WPARAM wParam, LPARAM lParam)
{
   char str[30] = "Hier erfolgte Mausklick";
   HDC dc;
    
   // beantworte Nachrichten mit entsprechenden Aktionen
   switch(uiMessage)
   {
       
      case WM_LBUTTONDOWN:
                        dc = GetDC(hWnd);                                 

                        TextOut(dc, LOWORD (lParam), HIWORD (lParam) ,str,strlen(str));
                           
                         // Gerätekontext freigeben
                         ReleaseDC(hWnd, dc);
                         return 0;

      case WM_DESTROY:
                        PostQuitMessage(0);
                        return 0;
       default: 
                        return DefWindowProc(hWnd,uiMessage,
                                                                     wParam,lParam);
   }

jedoch bekomme ich diese fehlermeldungen und ich weis nicht recht was ich damit anfangen soll:
[Linker error] undefined reference to `TextOutA@20'
ld returned 1 exit status

ich denke das dieses problem nicht explizit an diesen code liegt weil dev-c++ aehnliche fehlermeldungen bei tutorials mit wingui ausgiebt

jetzt frage ich euch was muss ich tun um diesen fehler zu beheben, bzw. welchen anderen compiler oder IDE koennt ihr mir empfehlen, ach ja ich muss noch dazu sagen das ich vorerst mal alles hardcoden moechte daher wuerde ich auch nicht zu visual c++ wechseln :)

schonmal thx im vorraus
 
Hi.

Wenn du lediglich Linker Fehler bekommst bedeutet das das dein Programm erfolgreich kompiliert werden konnte, allerdings Bibliotheken fehlen die du noch einbinden mußt.

Normalerweise sollten eigentlich wenn du bei Dev-C++ ein Win32 Projekt anlegst die wichtigsten Windows Bibliotheken eingebunden sein. Ansonsten mußt du mal in den Projekteinstellungen unter Bibliotheken nachschauen und die fehlenden Bibliotheken noch hinzufügen. Die Funktion TextOut ist laut MSDN in der Bibliothek gdi32.lib (bzw. libgdi32.lib) definiert. Diese Datei solltest du unterhalb des dev-cpp Verzeichnisses im \lib Verzeichnis finden.

Der GCC und Dev-CPP sind schon ganz OK. Du kannst dir ja auch mal MinGW Developer Studio anschauen, das setzt auch auf den GCC auf wie Dev-C++.

Gruß
 
Schau mal ab in den Projektoptionen eventuell noch "Win32 Console" oder etwas anders als "Win32 GUI" im Typ angegeben ist. Wenn ja als Typ in "Win32 GUI" auswählen und neu kompilieren. Dann sollte es funktionieren.

Gruß Byteblaster
 
Zurück