Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » programm beenden

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
13.04.2006, 20:48 Uhr
ref



Der Code:


C++:
#include<windows.h>
HWND CreateMainWindow(HINSTANCE hInstance);
LRESULT CALLBACK MessageHandler( HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam);

HWND hWnd=0;
int WINAPI WinMain( HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)
{
    hWnd=CreateMainWindow(hInstance);

if (NULL==hWnd)
{ MessageBox( 0,"Window Konnte Nicht Erzeugt Werden","Fehler",MB_OK);
return 0;
}

MSG msg;
while( GetMessage( &msg,NULL,0,0))
{
    TranslateMessage(&msg);
    DispatchMessage(&msg);
}
return 0;
}

HWND CreateMainWindow(HINSTANCE hInstance)
{
    WNDCLASSEX WndClass=
    { sizeof(WNDCLASSEX),
      CS_DBLCLKS|CS_OWNDC|CS_HREDRAW|CS_VREDRAW,
      MessageHandler,
      0,
      0,
      hInstance,
      LoadIcon(NULL,IDI_WINLOGO),
      LoadCursor(NULL,IDC_ARROW),
      (HBRUSH)GetStockObject(WHITE_BRUSH),
      NULL,
      "WindowClass",
      LoadIcon(NULL,IDI_WINLOGO)
      };

      RegisterClassEx(&WndClass);
      return CreateWindowEx( NULL,
      "WindowClass",
      "Hello Test",
      WS_OVERLAPPEDWINDOW|WS_VISIBLE,
      0,0,1024,768,
      NULL,
      NULL,
      hInstance,
      NULL);
}


      LRESULT CALLBACK MessageHandler( HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam)
      {
          switch (msg)
          {
              case WM_DESTROY:
              PostQuitMessage(0);
              return 0;
              break;
          }
       return DefWindowProc( hwnd,msg,wParam,lParam);
      }






die frage: wenn hier :

C++:
while( GetMessage( &msg,NULL,0,0))
{
    TranslateMessage(&msg);
    DispatchMessage(&msg);
}




getMessege gleich 0 ist also wenn das window geschlossen ist
, es wird nicht zu TranslateMessage & DispatchMessage vorbei gehen, das heisst
keine CALLBACK funktion umleitung und die schleife wird verlassen zu return 0 wo das ende des programms
bedeutet , ohne das programme mit PostQuitMessage oder DefWindowProc zu beenden??

ich gehe davon aus dass windows trotzdem auch in diesem fall die CALLBACK funktion
aufrufen wird um das programm zu beenden . was meint ihr?
--
Man kann ein Problem nicht mit der gleichen Denkweise lösen, mit der es erschaffen wurde. (Albert Einstein)

Dieser Post wurde am 13.04.2006 um 20:49 Uhr von ref editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
13.04.2006, 22:32 Uhr
Guybrush Threepwood
Gefürchteter Pirat
(Operator)


Nein, du verstehst das falsch. GetMessage liefert dann NULL wenn es eine WM_QUIT Nachricht bekommt und dann gibt es auch keinen Grund mehr warum man nochmal in die Callback Routine sollte.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: