Au secours !!!!!!!!!!!!!!!!!!!!!!!!!!!!

nemmezis Messages postés 22 Date d'inscription samedi 1 septembre 2001 Statut Membre Dernière intervention 16 juillet 2005 - 14 févr. 2003 à 20:47
cs_Beuss Messages postés 100 Date d'inscription samedi 27 juillet 2002 Statut Membre Dernière intervention 11 juin 2003 - 18 févr. 2003 à 10:47
Salut tout le monde !
Alors en fait je bosse sur Visual .NET;
je crée ma fenêtre avec CreateWindow( ... ) etc, mais le pb, c'est que quand je ferme mon programme, il est encore présent dans le gestionnaire des tâches de Windows (Ctrl + Alt + Suppr) !
Comment faire je vous en supplie, je sens que je vais me suicider !
A plus

13 réponses

BruNews Messages postés 21041 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 20
14 févr. 2003 à 20:53
Salut,
faut voir ta proc de fenetre et la boucle
while(GetMessage(...)
doit venir de la.
ciao...
0
nemmezis Messages postés 22 Date d'inscription samedi 1 septembre 2001 Statut Membre Dernière intervention 16 juillet 2005
14 févr. 2003 à 20:57
Ouais je vais voir ça
En fait moi c'est pas GetMessage( ... ) mais PeekMessage( ... ) car c'est une application Direct3D
Merci
Je reviendrai si ça marche tjs pas :)
0
nemmezis Messages postés 22 Date d'inscription samedi 1 septembre 2001 Statut Membre Dernière intervention 16 juillet 2005
14 févr. 2003 à 21:03
Non non j'ai tout regardé ça marche tjs pas !
J'ai même crée un projet pour comparer avec le miens, et c'est le même code !
J'en ai vraiment marre !!!!!!!!!!!!!!!
Help !!!!!!!
0
jonathanmcdougall Messages postés 64 Date d'inscription dimanche 9 février 2003 Statut Membre Dernière intervention 7 mars 2003
14 févr. 2003 à 21:10
> Non non j'ai tout regardé ça marche tjs pas !
> J'ai même crée un projet pour comparer avec le miens, et c'est le même code !
> J'en ai vraiment marre !!!!!!!!!!!!!!!
> Help !!!!!!!

Un peu de ton code (WinMain et WndProc +
création/enregistrement de la fenêtre) ne ferait pas de mal...

Jonathan Mcdougal
Montréal, Québec
mcdougalljonathan@hotmail.com
http://www.multimania.com/utopiasoftware
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
BruNews Messages postés 21041 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 20
14 févr. 2003 à 21:12
pose un MessageBox bidon a un endroit vers sortie. Si tu obtiens tu le pousses + loin, tu verras ainsi quand tu ne l'as plus.
0
nemmezis Messages postés 22 Date d'inscription samedi 1 septembre 2001 Statut Membre Dernière intervention 16 juillet 2005
14 févr. 2003 à 21:26
Voilà le code

LRESULT CALLBACK WindowProcess( HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam )
{
switch( message )
{
case WM_KEYDOWN :
{
switch( wParam )
{
case VK_ESCAPE :
DestroyWindow( hWnd );
break;
}
}
case WM_DESTROY :
{
PostQuitMessage( 0 );
break;
}
default :
return( DefWindowProc( hWnd, message, wParam, lParam ) );
}

return( FALSE );
}

bool InitInstance( HINSTANCE hInst, int mode )
{
hWnd = CreateWindow( "Moteur", "Moteur", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT,
0, CW_USEDEFAULT, 0, NULL, NULL, hInst, NULL );

if( !hWnd ) return FALSE;

ShowWindow( hWnd, mode );
UpdateWindow( hWnd );

return TRUE;
}

ATOM EnregistrerClasse( HINSTANCE hInst )
{
WNDCLASSEX wndClasse;

wndClasse.cbSize		= sizeof( WNDCLASSEX ); 
wndClasse.style			= CS_HREDRAW | CS_VREDRAW;
wndClasse.lpfnWndProc	= ( WNDPROC )WindowProcess;
wndClasse.cbClsExtra	= 0;
wndClasse.cbWndExtra	= 0;
wndClasse.hInstance		= hInst;
wndClasse.hIcon			= NULL;
wndClasse.hCursor		= LoadCursor( NULL, IDC_ARROW );
wndClasse.hbrBackground	= ( HBRUSH )( COLOR_WINDOW+1 );
wndClasse.lpszMenuName	= "Moteur";
wndClasse.lpszClassName	= "Moteur";
wndClasse.hIconSm		= NULL;

return( RegisterClassEx( &wndClasse ) );
}

int APIENTRY WinMain( HINSTANCE hInst, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int mode )
{
LONGLONG t0, t;
float dt, ft;

if( !EnregistrerClasse( hInst ) )
{
return( FALSE );
}

if( !InitInstance( hInst, mode ) )
{
return( FALSE );
}

CompteurTemps( t0, ft );

PeekMessage( &msg, NULL, 0, 0, PM_NOREMOVE );
while( msg.message != WM_DESTROY )
{
if( PeekMessage( &msg, NULL, 0, 0, PM_REMOVE ) )
{
TranslateMessage( &msg );
DispatchMessage( &msg );
}
else
{
if( CompteurTemps( t0, ft ) )
QueryPerformanceCounter( ( LARGE_INTEGER * ) &t );
else
t = GetTickCount();
dt = ( t - t0 ) * ft;
t0 = t;
}
}

UnregisterClass( "Moteur", hInst );

return( int( ( msg.wParam ) ) );
}


Merci de votre aide
0
jonathanmcdougall Messages postés 64 Date d'inscription dimanche 9 février 2003 Statut Membre Dernière intervention 7 mars 2003
14 févr. 2003 à 21:46
>PeekMessage( &msg, NULL, 0, 0, PM_NOREMOVE );
>while( msg.message != WM_DESTROY )
>{

>if( PeekMessage( &msg, NULL, 0, 0, PM_REMOVE ) )
>{
> TranslateMessage( &msg );
> DispatchMessage( &msg );
>}
>else
>{
> if( CompteurTemps( t0, ft ) )
> QueryPerformanceCounter( ( LARGE_INTEGER * ) &t );
> else
> t = GetTickCount();
> dt = ( t - t0 ) * ft;
> t0 = t;
>}
>UnregisterClass( "Moteur", hInst );
>return( int( ( msg.wParam ) ) );
> }

Mmmm.. je suis pas sûr, mais essaie ceci :

=========================================
while(true)
{

if (PeekMessage(&msg, 0,0,0,PM_REMOVE))
{
if (msg.message == WM_QUIT)
break;

TranslateMessage(&msg);
DispatchMessage(&msg);
}

//ta routine principale va ici

}

//ici, ta fenêtre agonise, il est temps de détruire tes objets

return msg.wParam;

//ta fenêtre est morte
=========================================

Jonathan Mcdougal
Montréal, Québec
mcdougalljonathan@hotmail.com
http://www.multimania.com/utopiasoftware
0
nemmezis Messages postés 22 Date d'inscription samedi 1 septembre 2001 Statut Membre Dernière intervention 16 juillet 2005
14 févr. 2003 à 21:57
Non non j'ai essayé ton truc cela ne change rien !
:(((((((((
0
cs_Beuss Messages postés 100 Date d'inscription samedi 27 juillet 2002 Statut Membre Dernière intervention 11 juin 2003
14 févr. 2003 à 22:33
PostQuitMessage(0); à la fin
0
jonathanmcdougall Messages postés 64 Date d'inscription dimanche 9 février 2003 Statut Membre Dernière intervention 7 mars 2003
17 févr. 2003 à 09:01
> PostQuitMessage(0); à la fin
>

PostQuitMessage() se met habituellement dans le case WM_DESTROY du WndProc

(de msdn)
This function indicates to Windows that a thread has made a request to terminate (quit). The PostQuitMessage function posts a WM_QUIT message to the thread's message queue and returns immediately; the function simply indicates to the system that the thread is requesting to quit at some time in the future.

> > > while(true)
> > > {
> > >
> > > if (PeekMessage(&msg, 0,0,0,PM_REMOVE))
> > > {
> > > if (msg.message == WM_QUIT)
> > > break;
> > >
> > > TranslateMessage(&msg);
> > > DispatchMessage(&msg);
> > > }
> > >
> > > //ta routine principale va ici
> > >
> > > }
> > >
> > > //ici, ta fenêtre agonise, il est temps de détruire tes objets
> > >
> > > return msg.wParam;
> > >
> > > //ta fenêtre est morte
> > >

Jonathan Mcdougal
Montréal, Québec
mcdougalljonathan@hotmail.com
http://www.multimania.com/utopiasoftware
0
cs_Beuss Messages postés 100 Date d'inscription samedi 27 juillet 2002 Statut Membre Dernière intervention 11 juin 2003
17 févr. 2003 à 11:02
Bon ok, déjà le test pour sortir du prog ca devrait etre avec WM_QUIT et pas WM_DESTROY sinon il fera jamais le PostQuitMessage quoi que tu en dises c'est ca j'ai déja eu le cas
nemmezis remplace while( msg.message != WM_DESTROY )
par while( msg.message != WM_QUIT) et tout rentrera dans l'ordre
0
jonathanmcdougall Messages postés 64 Date d'inscription dimanche 9 février 2003 Statut Membre Dernière intervention 7 mars 2003
18 févr. 2003 à 03:33
> > > > > while(true)
> > > > > {
> > > > >
> > > > > if (PeekMessage(&msg, 0,0,0,PM_REMOVE))
> > > > > {
> > > > > if (msg.message == WM_QUIT)
> > > > > break;
> > > > >
> > > > > TranslateMessage(&msg);
> > > > > DispatchMessage(&msg);
> > > > > }
> > > > >
> > > > > //ta routine principale va ici
> > > > >
> > > > > }
> > > > >
> > > > > //ici, ta fenêtre agonise, il est temps de détruire tes objets
> > > > >
> > > > > return msg.wParam;
> > > > >
> > > > > //ta fenêtre est morte
> > > > >

> > > PostQuitMessage(0); à la fin
> > >

> >
> >
> > PostQuitMessage() se met habituellement dans le case WM_DESTROY du WndProc
> >
> > (de msdn)
> > This function indicates to Windows that a thread has made a request to terminate (quit). The PostQuitMessage function posts a WM_QUIT message to the thread's message queue and returns immediately; the function simply indicates to the system that the thread is requesting to quit at some time in the future.
> >
> >

> Bon ok, déjà le test pour sortir du prog ca devrait etre avec
>WM_QUIT et pas WM_DESTROY sinon il fera jamais le
>PostQuitMessage quoi que tu en dises c'est ca j'ai déja eu
>le cas

C'est ça que j'ai dis :

if (msg.message == WM_QUIT)
break;

> nemmezis remplace while( msg.message !=
>WM_DESTROY )
> par while( msg.message != WM_QUIT) et tout rentrera
>dans l'ordre

Je ne crois pas, car c'était ma suggestion, mais le problème n'a pas été réglé.

Jonathan Mcdougal
Montréal, Québec
mcdougalljonathan@hotmail.com
http://www.multimania.com/utopiasoftware
0
cs_Beuss Messages postés 100 Date d'inscription samedi 27 juillet 2002 Statut Membre Dernière intervention 11 juin 2003
18 févr. 2003 à 10:47
C'est qu'il a du mal testé car avec son test on ne passe jamais dans le case WM_DESTROY du switch puisqu'on se casse avant, et c'est bien le PostQuitMessage qui fait disparaitre de la fenetre des processus en execution
0