begin process at 2010 02 10 13:42:21
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

API

 > C/C++ SOUS WINDOWS SANS MFC - TUTORIAL 2 : ECRITURE DANS UNE FENETRE

C/C++ SOUS WINDOWS SANS MFC - TUTORIAL 2 : ECRITURE DANS UNE FENETRE


 Information sur la source

Note :
4,33 / 10 - par 3 personnes
4,33 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :API Classé sous :wmpaint, hdc, ecrire, paint, texte Niveau :Débutant Date de création :18/01/2006 Date de mise à jour :19/01/2006 02:51:40 Vu :11 993

Auteur : LaPatoshe

Ecrire un message privé
Commentaire sur cette source (15)
Ajouter un commentaire et/ou une note

 Description

Dans ce tutorial qui fait suite à C/C++ SOUS WINDOWS SANS MFC, nous allons voir comment écrire du texte dans une fenêtre.

Source

  • //TUTORIAL AFFICHAGE DE TEXTE DANS UNE FENETRE WINDOWS
  • Dans le tutorial précédent (C/C++ sous Windows sans MFC) il était expliqué comment créer une fenêtre sous Windows, avec une boucle de traitement de messages, et une procédure de traitement de ces messages.
  • Dans ce tutorial nous allons voir comment écrire du texte dans cette fenêtre, et comment l'afficher.
  • Dans des programmes écrits dans des langages tels que le Visual Basic, ou encore en C sous DOS, pour afficher du texte, il suffisait d'appeler une fonction d'affichage et de lui indiquer la chaine de caractère à faire apparaitre à l'écran. On pouvait agrémenter cet affichage d'options relatives à la couleur d'écriture, la hauteur des lettres.
  • Dans Windows, pour afficher du texte dans une fenêtre, c'est un peu différend. On ne va pas se servir de l'affichage direct. On va demander à Windows de redessiner la fenêtre et lors du message de raffraichissement de cette fenêtre, on va demander à ce que soit écrit le texte.
  • Une fenêtre qui s'affiche à l'écran demande souvent à être redessinée. Cela se produit par exemple lorsqu'une autre fenêtre passe devant, lorsqu'on déplace la fenêtre, lorsqu'on la diminue ou qu'on change ses dimensions. Losque cela se produit, Windows envoie le message WM_PAINT. C'est donc dans WM_PAINT que l'on doit placer tout ce que l'on veut qu'il soit dessiné dans notre fenêtre. A noter que les éléments de fenêtre basiques (boutons de fermeture, cadre...) sont redessinés par Windows lors de WM_PAINT sans que l'on ait besoin de le recoder.
  • Le message WM_PAINT apparait donc ainsi:
  • case WM_PAINT:
  • {
  • ........
  • }
  • A l'intérieur, avant d'écrire notre chaine de caractère, il va falloir paramétrer certaines choses.
  • Tout d'abbord, lorsqu'on dit dessiner dans une fenêtre, il faut comprendre dessiner sur le support prévu à l'écriture de cette fenêtre. C'est comme pour une feuille de papier, n'écrit pas dans la marge par exemple. La partie d'une fenêtre dans laquelle on doit écrire est la partie qui par défaut est blanche. Cette partie ne s'identifie pas par la valeur HWND de la fenêtre mais par une valeur de type HDC. Le HDC est la partie du HWND dans laquelle on peut dessiner, ecrire...
  • On créé donc en premier lieu une variable hDC
  • HDC hDC;
  • Ensuite, on va attribuer à notre hDC la partie dessin de notre fenêtre.
  • hDC = GetWindowDC(hFenetre); //hFenetre est de type HWND
  • Maintenant, on va créer une variable structure PAINTSTRUCT. Il s'agit d'un élément nécessaire pour peindre la zone cliente de notre fenêtre. Il n'est pas nécessaire d'en changer les paramètres
  • PAINTSTRUCT Ps;
  • Maintenant que nous disposons de notre fenêtre, de son HDC et de notre élément PAINTSTRUCT, on va commencer à peindre.
  • Le début du dessin de notre texte va commencer par la fonction suivante : BeginPaint
  • hDC = BeginPaint( hFenetre, &Ps);
  • Maintenant, on va placer l'écriture de notre texte avec la fonction TextOut
  • TextOut (hDC, 10, 10, "Voici notre Phrase", strlen("Voici notre Phrase"));
  • La fonction TextOut va se charger d'écrire aux coordonnées 10,10 de notre fenêtre la phrase "Voici notre Phrase", strlen indique la taille de la chaine.
  • Enfin, il faut mettre fin à la peinture avec la fonction EndPaint :
  • EndPaint (hFenetre, &Ps);
  • voila, notre évènement WM_PAINT est complet. Maintenant, lorqeu la fenêtre aura à être redessinée, notre phrase apparaitra. Il manque néamoins quelque chose.
  • On ne veut pas necessairement attendre que notre programme reçoive une demande de redessiner la fenêtre dans 15 ans, lorsque une autre fenêtre passera par dessus par exemple. On veut que notre texte s'affiche tout de suite. Il va falloir indiquer explicitement à Windows qu'on veut que notre fenêtre se redessine tout de suite. Ceci se
  • fait en indiquant à Windows que la fenêtre n'est pas valide.
  • Ainsi, dans la procédure générale de dessin des fenêtres et contrôles, il faut placer la fonction InvalidateRect:
  • InvalidateRect (hFenetre, 0, FALSE);
  • Voici ci dessous le programme complet associant le tutorial C/C++ sous Windows sans MFC avec ce qui vient d'être vu:
  • #include <windows.h>
  • int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd);
  • LRESULT CALLBACK WinProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
  • bool stop = false;
  • int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
  • {
  • HWND hFenetre;
  • MSG MessagesAEnvoyer;
  • WNDCLASS Fenetre;
  • Fenetre.lpszMenuName =NULL;
  • Fenetre.cbClsExtra =0;
  • Fenetre.cbWndExtra =0;
  • Fenetre.hInstance = hInstance;
  • Fenetre.lpfnWndProc = WinProc;
  • Fenetre.lpszClassName = "FENETRE DE TYPE A MOI";
  • Fenetre.style = CS_VREDRAW | CS_HREDRAW;
  • Fenetre.hbrBackground = (HBRUSH) GetStockObject(WHITE_BRUSH);
  • Fenetre.hIcon =(HICON) LoadIcon(hInstance, IDI_APPLICATION);
  • Fenetre.hCursor =(HCURSOR) LoadCursor(hInstance, IDC_ARROW);
  • RegisterClass(&Fenetre);
  • hFenetre = CreateWindow("FENETRE DE TYPE A MOI", "Voici la fenêtre", WS_OVERLAPPEDWINDOW, 200, 200, 300, 250, NULL, NULL, hInstance, NULL);
  • ShowWindow(hFenetre,nShowCmd);
  • InvalidateRect(hFenetre, 0, FALSE);
  • while (GetMessage(&MessagesAEnvoyer, hFenetre, 0, 0))
  • {
  • TranslateMessage (&MessagesAEnvoyer);
  • DispatchMessage (&MessagesAEnvoyer);
  • }
  • return 0;
  • }
  • LRESULT CALLBACK WinProc (HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
  • {
  • switch (uMsg)
  • {
  • case WM_DESTROY:
  • {
  • stop = true ;
  • PostQuitMessage(0);
  • return 0;
  • }
  • case WM_PAINT:
  • {
  • HDC hDC;
  • hDC = GetWindowDC(hWnd);
  • PAINTSTRUCT Ps;
  • hDC = BeginPaint(hWnd, &Ps);
  • TextOut (hDC, 10, 10,"Voici notre Phrase", strlen("Voici note Phrase"));
  • EndPaint(hWnd, &Ps);
  • return 0;
  • }
  • }
  • return DefWindowProc(hWnd, uMsg, wParam, lParam);
  • }
  • Options:
  • Avant d'écrire le texte avec la procédure TextOut, on peut utiliser diverses options
  • Par exemple utiliser des couleurs de texte différentes que celles par défaut avec la fonction SetTextColor
  • SetTextColor (hDC,RGB(255,0,0)); //Ecrit le text des commandes TextOut suivantes en rouge.
  • SetBkColor(hDC, RGB(255,0,0)); //Ecrit le texte sur un fond rouge.
  • ou encore :
  • HFONT Font;
  • Font = CreateFont(20, 30, 50, 50, FW_REGULAR, TRUE, FALSE, FALSE, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH, "Time New Roman");
  • //Crée une police de type Times News Roman dans laquelle la taille des lettres sera 20,30. Les valeurs TRUE, FALSE, FALSE indique les styles italic non souligné. Je vous invite à voir les autres options sur MSDN (options notament liées à l'orientation du texte correspondant ici aux paramètres 50,50.
  • SelectObject(hDC, (HGDIOBJ) Font); //Utilise cette font créee pour les TextOut qui suivent.
  • Voilà pour ce qui est de l'écriture de textes dans une fenêtre avec WM_PAINT. A noter que WM_PAINT sert aussi pour le dessin de tout autre graphique.
  • Bon courage.
//TUTORIAL AFFICHAGE DE TEXTE DANS UNE FENETRE WINDOWS
Dans le tutorial précédent (C/C++ sous Windows sans MFC) il était expliqué comment créer une fenêtre sous Windows, avec une boucle de traitement de messages, et une procédure de traitement de ces messages.
Dans ce tutorial nous allons voir comment écrire du texte dans cette fenêtre, et comment l'afficher.

Dans des programmes écrits dans des langages tels que le Visual Basic, ou encore en C sous DOS, pour afficher du texte, il suffisait d'appeler une fonction d'affichage et de lui indiquer la chaine de caractère à faire apparaitre à l'écran. On pouvait agrémenter cet affichage d'options relatives à la couleur d'écriture, la hauteur des lettres.

Dans Windows, pour afficher du texte dans une fenêtre, c'est un peu différend. On ne va pas se servir de l'affichage direct. On va demander à Windows de redessiner la fenêtre et lors du message de raffraichissement de cette fenêtre, on va demander à ce que soit écrit le texte.

Une fenêtre qui s'affiche à l'écran demande souvent à être redessinée. Cela se produit par exemple lorsqu'une autre fenêtre passe devant, lorsqu'on déplace la fenêtre, lorsqu'on la diminue ou qu'on change ses dimensions. Losque cela se produit, Windows envoie le message WM_PAINT. C'est donc dans WM_PAINT que l'on doit placer tout ce que l'on veut qu'il soit dessiné dans notre fenêtre. A noter que les éléments de fenêtre basiques (boutons de fermeture, cadre...) sont redessinés par Windows lors de WM_PAINT sans que l'on ait besoin de le recoder.

Le message WM_PAINT apparait donc ainsi:
case WM_PAINT:
{
........
}

A l'intérieur, avant d'écrire notre chaine de caractère, il va falloir paramétrer certaines choses.
Tout d'abbord, lorsqu'on dit dessiner dans une fenêtre, il faut comprendre dessiner sur le support prévu à l'écriture de cette fenêtre. C'est comme pour une feuille de papier, n'écrit pas dans la marge par exemple. La partie d'une fenêtre dans laquelle on doit écrire est la partie qui par défaut est blanche. Cette partie ne s'identifie pas par la valeur HWND de la fenêtre mais par une valeur de type HDC. Le HDC est la partie du HWND dans laquelle on peut dessiner, ecrire...

On créé donc en premier lieu une variable hDC
HDC hDC;

Ensuite, on va attribuer à notre hDC la partie dessin de notre fenêtre.
hDC = GetWindowDC(hFenetre);  //hFenetre est de type HWND

Maintenant, on va créer une variable structure PAINTSTRUCT. Il s'agit d'un élément nécessaire pour peindre la zone cliente de notre fenêtre. Il n'est pas nécessaire d'en changer les paramètres

PAINTSTRUCT Ps;

Maintenant que nous disposons de notre fenêtre, de son HDC et de notre élément PAINTSTRUCT, on va commencer à peindre.

Le début du dessin de notre texte va commencer par la fonction suivante : BeginPaint

hDC = BeginPaint( hFenetre, &Ps);

Maintenant, on va placer l'écriture de notre texte avec la fonction TextOut
TextOut (hDC, 10, 10, "Voici notre Phrase", strlen("Voici notre Phrase")); 			
La fonction TextOut va se charger d'écrire aux coordonnées 10,10 de notre fenêtre la phrase "Voici notre Phrase", strlen indique la taille de la chaine.

Enfin, il faut mettre fin à la peinture avec la fonction EndPaint :
EndPaint (hFenetre, &Ps);

voila, notre évènement WM_PAINT est complet. Maintenant, lorqeu la fenêtre aura à être redessinée, notre phrase apparaitra. Il manque néamoins quelque chose. 
On ne veut pas necessairement attendre que notre programme reçoive une demande de redessiner la fenêtre dans 15 ans, lorsque une autre fenêtre passera par dessus par exemple. On veut que notre texte s'affiche tout de suite. Il va falloir indiquer explicitement à Windows qu'on veut que notre fenêtre se redessine tout de suite. Ceci se
fait en indiquant à Windows que la fenêtre n'est pas valide. 
Ainsi, dans la procédure générale de dessin des fenêtres et contrôles, il faut placer la fonction InvalidateRect:
InvalidateRect (hFenetre, 0, FALSE);

Voici ci dessous le programme complet associant le tutorial C/C++ sous Windows sans MFC avec ce qui vient d'être vu:

#include <windows.h>

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd);

LRESULT CALLBACK WinProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
bool stop = false; 

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
{
HWND hFenetre;
MSG MessagesAEnvoyer;

WNDCLASS Fenetre; 
Fenetre.lpszMenuName =NULL;
Fenetre.cbClsExtra  =0;
Fenetre.cbWndExtra =0;
Fenetre.hInstance = hInstance; 
Fenetre.lpfnWndProc = WinProc;
Fenetre.lpszClassName = "FENETRE DE TYPE A MOI";
Fenetre.style =  CS_VREDRAW | CS_HREDRAW; 
Fenetre.hbrBackground = (HBRUSH) GetStockObject(WHITE_BRUSH);
Fenetre.hIcon =(HICON)  LoadIcon(hInstance, IDI_APPLICATION);
Fenetre.hCursor =(HCURSOR)  LoadCursor(hInstance, IDC_ARROW);

RegisterClass(&Fenetre);

hFenetre = CreateWindow("FENETRE DE TYPE A MOI", "Voici la fenêtre", WS_OVERLAPPEDWINDOW, 200, 200, 300, 250, NULL, NULL, hInstance, NULL);

ShowWindow(hFenetre,nShowCmd);

InvalidateRect(hFenetre, 0, FALSE);


while (GetMessage(&MessagesAEnvoyer, hFenetre, 0, 0))
{ 
	TranslateMessage (&MessagesAEnvoyer); 
	DispatchMessage (&MessagesAEnvoyer);
}

return 0; 
}


LRESULT CALLBACK WinProc (HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
	switch (uMsg)
	{
		case WM_DESTROY:
		{
			stop = true ;
			PostQuitMessage(0);
			return 0;
		}
		case WM_PAINT:
		{
			HDC hDC;
			hDC = GetWindowDC(hWnd);
			PAINTSTRUCT Ps;
			hDC = BeginPaint(hWnd, &Ps);
			TextOut (hDC, 10, 10,"Voici notre Phrase", strlen("Voici note Phrase"));
			EndPaint(hWnd, &Ps);
			return 0;
		}
	}
	return DefWindowProc(hWnd, uMsg, wParam, lParam); 
}
			


Options:
Avant d'écrire le texte avec la procédure TextOut, on peut utiliser diverses options
Par exemple utiliser des couleurs de texte différentes que celles par défaut avec la fonction SetTextColor
SetTextColor (hDC,RGB(255,0,0)); //Ecrit le text des commandes TextOut suivantes en rouge.
SetBkColor(hDC, RGB(255,0,0)); //Ecrit le texte sur un fond rouge.

 ou encore : 

HFONT Font;
Font = CreateFont(20, 30, 50, 50, FW_REGULAR, TRUE, FALSE, FALSE, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, 												DEFAULT_QUALITY, DEFAULT_PITCH, "Time New Roman");
//Crée une police de type Times News Roman dans laquelle la taille des lettres sera 20,30. Les valeurs TRUE, FALSE, FALSE indique les styles italic non souligné. Je vous invite à voir les autres options sur MSDN (options notament liées à l'orientation du texte correspondant ici aux paramètres 50,50.
SelectObject(hDC, (HGDIOBJ) Font); //Utilise cette font créee pour les TextOut qui suivent.


Voilà pour ce qui est de l'écriture de textes dans une fenêtre avec WM_PAINT. A noter que WM_PAINT sert aussi pour le dessin de tout autre graphique.
Bon courage.



 Historique

19 janvier 2006 02:51:41 :
mise à jour faite suite aux constatations évoquée dans les commentaires.

 Sources du même auteur

C/C++ SOUS WINDOWS TUTORIAL 3 : CREATION ET AFFICHAGE DE CON...
Source avec Zip ENREGISTREMENT ET RESTITUTION DE TEXTE EN EDIT MULTILINE
Source avec Zip CRÉATION DE CONTROLES AVEC CLASSE ET LIBRAIRIE PERSO SANS MF...
Source avec Zip C/C++ SOUS WINDOWS SANS MFC TUTORIAL 1

 Sources de la même categorie

Source avec Zip Source avec une capture CALENDRIER (WIN64) par BruNews
Source avec Zip Source avec une capture IMPRESSION EN WIN32 API AVEC OPTIONS par racpp
Source avec Zip Source avec une capture INFOTIP SHELL EXTENSION (BULLE DE L'EXPLORATEUR WINDOWS) (WI... par racpp
Source avec Zip Source avec une capture BROUILLAGE DES FICHIERS JAVASCRIPT ET CSS(WIN32) par gagah1
Source avec Zip Source avec une capture CHANGE CURSEUR par ganjarasta

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture TRAITEMENT DE TEXTE par Cordok
Source avec Zip ANALYSE DES MOTS D'UN TEXTE par manta7
Source avec Zip Source avec une capture LOGICIEL D'ÉDITION DE FICHIERS TEXTE. par Benj35
Source avec Zip Source avec une capture DÉBUT D'UN "PAINT" EN SDL par jashnlt
Source avec Zip Source avec une capture SDL_TT ECRIRE DU TEXTE AVEC SAUT DE LIGNE. par gillescpp

Commentaires et avis

Commentaire de BruNews le 19/01/2006 00:07:26 administrateur CS

hDC = GetWindowDC(hFenetre); que fait cela ici ???
PAINTSTRUCT Ps;
hDC = BeginPaint(hFenetre, &Ps);
d'où vient ce 'hFenetre' ??? c'est hwnd, 1er param de la winProc.

Quand on traite WM_PAINT on ne repasse pas à DefWindowProc() mais on retourne 0.

while (!stop) ??? Ouate Isis ??? (en english...)
à changer en:
while(GetMessage(....)) {
  TranslateMessage(...);
  DispatchMessage(...);
}

A remanier en profondeur.

Commentaire de max12 le 19/01/2006 02:26:19 administrateur CS

L'idée est bonne mais il y a des ptit problème à regarder :( Bon te reste qu'a suivre les conseils de brubru et d'éventuel autres posteurs. Je reviendrai voir plus tard.

A+

Commentaire de LaPatoshe le 19/01/2006 02:32:44

salut. En fait, j'ai repris l'ancien listing du tuto 1 et effectivement, m^me si le prog fonctionne comme ça, il y a quelques trucs qui peuvent sauter aux yeux de par leur inutilité et le gaspillage de ressources qu'ils entrainent (while stop par exemple). Pour ce qui est de hFenetre, j'ai directement utilisé le Handle de la fenêtre crée et non son paramètre passé en WinProc. C'est vrai qu'il semble beaucoup plus logique d'utiliser le paramètre hWnd.
Dès que j'aurai une minute ou deux, je ferai une petite mise à jour.
A+

Commentaire de hugues7E5 le 29/01/2006 19:03:18

toujours simpa de lire tes tutos, mais heureusement que BruNews est là pour corriger les erreurs!

Apres correction, ça marche.

Merci.

Commentaire de Chubab le 10/05/2006 04:44:55

jai bien aimé cette source, mais j'ai toujours la même erreur quand je build ce programme dans visual studio....

Deleting intermediate files and output files for project 'win app - Win32 Debug'.
--------------------Configuration: win app - Win32 Debug--------------------
Compiling...
win app.cpp
Linking...
LIBCD.lib(crt0.obj) : error LNK2001: unresolved external symbol _main
Debug/win app.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.

win app.exe - 2 error(s), 0 warning(s)

Savez-vous pourquoi??...Merci!

PS: j'aimerais voir le premier tutoriel aussi...je ne le trouve pas...

Commentaire de LaPatoshe le 11/05/2006 02:14:55

salut. Ne travaillant pas avec le C++.Net, si c'est avec cette version que tu as des problèmes, je ne vois pas trop d'où cela peut venir. D'après le message d'erreur, on dirait qu'il faille que tu enlèves des fichiers intermédiaires (peut être des fichier générés automatiquement lors de la création de ton appli et entrant en conflit avec #include <windows.h> du programme) encore que je n'en soit pas sûr.
Sinon, le tutorial 1 est à l'adresse suivante :
http://www.cppfrance.com/codes/CPLUSPLUS-SOUS-WINDOWS-SANS-MFC-TUTORIAL_24022.aspx
A+

Commentaire de BruNews le 11/05/2006 10:07:15 administrateur CS

Faut faire un projet Win App GUI et non pas console.

Commentaire de Chubab le 11/05/2006 20:09:08

salut! jai reussi à compiler! je ne savais tout simplement pas que nous devions etre dans un project win32! dsl!

quand je nutilise pas while(!stop) par contre jessaye de fermer le programme...mais il continue a rouler dans le background et prend tout mon cpu(ce qui nest pas le cas avant que je passe par WM_DESTROY)...je dois ensuite le fermer a laide de ctrl-alt-del...

quelqu'un sait pourquoi??
Merci,
CHUBAB!

Commentaire de BruNews le 11/05/2006 20:56:08 administrateur CS

La forme générale de la pompe à message est:

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

Si tu as PostQuitMessage(0); de correctement mis alors ça sort à tout coup.
Variable 'stop' est absolument à supprimer.

Commentaire de Chubab le 11/05/2006 22:14:20

Merci BruNews,
j'ai trouver le probleme...c'est pcq PostQuitMessage(0) est dans WM_DESTROY alors quil devrait etre dans WM_CLOSE!
Et voila!,
Chubab!

Commentaire de tennisdev44 le 15/04/2007 07:23:02

Bonjour,
Quand je place PostQuitMessage(0) dans WM_DESTROY, le programme ne se ferme pas complètement. Quand je le met dans WM_CLOSE ça ne change rien...
Je travaille sous dev c++ en projet Win 32 GUI


Sauriez vous pourquoi le programme ne se ferme pas complètement?

Commentaire de LaPatoshe le 15/04/2007 18:07:03

Bonjour, cela veut il dire que la fenêtre se ferme, mais que le programme tourne toujours et apparait encore de ce fait dans les processus actifs de Windows ?

Commentaire de akadis le 11/10/2007 17:23:18

Bonjour, je travaille sous Visual C++ et je rencontre aussi ce problème. C'est à dire que lorsque je ferme la fenêtre soit en cliquant sur la croix, soit en cliquant sur l'icône puis en faisant Fermer, la fenêtre disparait mais le processus tourne toujours.
Existe t'il un façon "propre" (sans killer le processus) pour terminer l'application ?

Commentaire de LaPatoshe le 11/10/2007 22:50:20

Bonsoir, il y a un moment maintenant que j'avais écrit ce code, essaies de voir ce que cela donne en enlevant les return 0 de la partie des traitement des messages.
Ainsi, le retour de boucle se fera en renvoyant les paramètres DefWinProc.

Commentaire de akadis le 12/10/2007 00:56:23

Dans la boucle d'écoute des évènements si on remplace le
while (GetMessage(&MessagesAEnvoyer, hFenetre, 0, 0))
par
while (GetMessage(&MessagesAEnvoyer, NULL, 0, 0))
Ca résoud le problème :)

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

lire/ecrire fichier texte a plusieurs colonnes [ par denini ] voilà, j'aimerais ecrire et lire sur un fichier texteJe voudrais stocker une date, une valeur et un nbet ce pour N clients.Je voudrais que le fichier ecrire et lire un fichier texte [ par denini ] voilà, j'aimerais ecrire et lire sur un fichier texteJe voudrais stocker une date, une valeur et un nbet ce pour N clients.Je voudrais que le fichier Ecrire ds un fichier dans un fichier texte ce ki apparait ds une console dos [ par BennyB ] Es-ca possible ???J'ai essayé gets(string); fwrite( stdout, sizeof( char ), 250, OutFile ); fclose( OutFile );ms ca marche pas :( inserer texte en debut de fichier [ par MrKribou ] Ma question: ya t'il une methode qui permettrait d'ecrire en debut de fichier (mais sans ecrire par dessus) ou faut t'il forcement passer par une sort ecrire sur une image [ par oRTEEZ ] Bonjour,Voila mon programme accepte la selection d'une image en entre et la saisie d'un texte.Ensuite je desirerais superposer le texte a l'image, mai Ecrire texte dans un ecran virtuel [ par skalaska ] Salut,j'aimerai savoir comment il serait possible d'ecrire du texte dans un ecran virtuel pour que je puisse modifier la couleur de chaque pixel du te Dessiner un texte dans un hwnd en mode non erase.. [ par JackosKing ] lo,voilà pour le moment j'utilisai ceci pour dessiner un texte dans un bdg: char buf[10];// SYSTEMTIME CurrentTime; HFONT hFont; hFont=Creat Ecrire dans un fichier texte [ par ScorpionTiti ] J'ai un problème. Ce la concerne la programmation C.Je voudrais écrire une chaîne de caractère dans un fichier .txt. Comment je peux procéder ? ecrire du texte sur une image bmp sans utiliser Le GDI [ par zilou ] salut à tousEn utilisant le GDI, avec le code de brunews, mon problème est que je n'arrive pas à faire disparaitre la fenêtre. En effet mon programme ecrire du texte sous windows avec builder [ par cbil ] débutant en c/c++ et flash - Me contacterJe souhaites ecrirre plusieurs lignes de texte sur une fenetre.Est-ce bien l'outil "Label" qu'il faut utilise


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,998 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales