Seite 1 von 1

C++ WINAPI-Problem

BeitragVerfasst: 2. Jul 2010, 20:18
von Gast
Hallo Leute, ich habe mal versucht ein kleines WINAPI-Programm objektorientiert um zu setzen.

Code: Alles auswählen
// .h

class CCALLBACK   :   public CCALLBACKQUIT, public CCALLBACKCREATE
{
public:
   LRESULT m_LRRender(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);
};

class CMAINCLASS   :   public CCALLBACK
{
private:
    HWND   hWnd;
    MSG      msg;
    WNDCLASS   wc;
public:
   CMAINCLASS(void);
   BOOL m_bCreate(int iCmdShow);
   int m_iMsgLoop(void);
};

// .cpp

HINSTANCE   g_hInst;
CMAINCLASS* CMainC;


MAIN_BEGIN                 // #define MAIN_BEGIN   int WINAPI WinMain(...){

   g_hInst   = hInstance;
   CMainC   = new CMAINCLASS();

   if(!CMainC->m_bCreate(iCmdShow))
                       {MessageBox(NULL, "Fehler", "Fehler", MB_OK);   return 1;}

   int iBack = CMainC->m_iMsgLoop();

   delete CMainC;
   return iBack;

MAIN_GET                   // #define MAIN_GET   }LRESULT CALLBACK WndProc(...){

   return CMainC->m_LRRender(hWnd, message, wParam, lParam);

MAIN_END                   // #define MAIN_END   }


Dies kann ich auch ohne Probleme compilieren.
Allerdings blinkt das erstellte Fenster nur einmal kurz auf und dann beendet sich das Programm
durch auffangen von WM_DESTROY, obwohl ich diese MSG nirgends losschick.

Hat jemand eine Idee woran das liegen könnte?

Schonmal danke
mfg c_r_89

Re: C++ WINAPI-Problem

BeitragVerfasst: 3. Jul 2010, 10:34
von Gast
äh... leider blick ich bei deinem code nicht durch >_>

kannst den mal in normaler c++ schreiben?

vielleicht hast beim abfangen der nachricht, das break vergessen, so das er es zeichnet, dann aber auch gleich in den DESTROY zweig geht, und somit es automatisch beendet.

mfg

Re:Re: C++ WINAPI-Problem

BeitragVerfasst: 3. Jul 2010, 13:16
von Gast
Jo danke funktioniert.. Genau daran hat es gelegen :?

Und was meinst du mit "normaler c++"?

Hab mir einfach einen kleinen Header für Schreibfaule geschrieben: :mrgreen:

Code: Alles auswählen
// WinMain.h

#pragma once

#include <windows.h>

#define MAIN_BEGIN      int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, char* pcCmdLine, int iCmdShow){
#define MAIN_GET        }LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam){
#define MAIN_END        }

Re: Re:Re: C++ WINAPI-Problem

BeitragVerfasst: 3. Jul 2010, 19:59
von Gast
c_r_89 hat geschrieben:Jo danke funktioniert.. Genau daran hat es gelegen :?

Und was meinst du mit "normaler c++"?

Hab mir einfach einen kleinen Header für Schreibfaule geschrieben: :mrgreen:

Code: Alles auswählen
// WinMain.h

#pragma once

#include <windows.h>

#define MAIN_BEGIN      int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, char* pcCmdLine, int iCmdShow){
#define MAIN_GET        }LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam){
#define MAIN_END        }


kein problem ;)

mit normalen c++ meinte ich, den ganzen code, und nicht nur ein paar schnipsel, wie oben gepostet^^

Re: Re: Re: Re:...

BeitragVerfasst: 11. Jul 2010, 13:34
von Gast
Ja ok das stimmt. Wäre allerdings etwas viel gewesen und dachte es wäre ein allgemeines Problem und nicht so ein doofer Fehler. :?