Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

ENUMERATION DES FENETRES


Information sur la source

Catégorie :API Niveau : Initié Date de création : 10/10/2004 Vu / téléchargé: 4 081 / 403

Note :
3,5 / 10 - par 2 personnes
3,50 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (21)
Ajouter un commentaire et/ou une note


Description

Cliquez pour voir la capture en taille normale
une boite de dialogue composée de deux listebox, une affiche la liste des fenetres principales et la deuxiemes les fenetres enfants relatives à chacune d'elles, + deux boutons pour fermer la fenetre selectionnée
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Commentaires et avis

signaler à un administrateur
Commentaire de AlexMAN le 10/10/2004 10:52:48

Bonjour,

Un ptit conseil deja : Crée un projet vide pour ne pas avoir ces "stdafx.xx" paske c chiant (tu peux ps compiler sans) et c moche (je trouve).
Et ensuite une kestion :  Pkoi utiliser tchar.h et donc _tWinMain, TCHAR...Etc ?

Voila, merci

++

signaler à un administrateur
Commentaire de AlexMAN le 10/10/2004 10:58:12

Oula, jviens de regarder le code, et j'ai maintenant kelk ptites ramark :

int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow)
{
hHeap=GetProcessHeap(); //obtenir le heap de l'application
WNDCLASSEX wcex;
wcex.cbSize = sizeof(WNDCLASSEX);
wcex.style = CS_HREDRAW | CS_VREDRAW;
wcex.lpfnWndProc = (WNDPROC)WndProc;
wcex.cbClsExtra = 0;
wcex.cbWndExtra = 0;
wcex.hInstance = hInstance;
wcex.hIcon = LoadIcon(hInstance, (LPCTSTR)IDI_FENETRES);
wcex.hCursor = LoadCursor(NULL, IDC_ARROW);
wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
wcex.lpszMenuName = NULL;
wcex.lpszClassName = "FENETRES";
wcex.hIconSm = LoadIcon(wcex.hInstance, (LPCTSTR)IDI_SMALL);

if(!RegisterClassEx(&wcex))return(0); //enregistrement de la classe de la fenetre
DialogBox(hInstance, MAKEINTRESOURCE(IDD_DIALOG1), NULL, (DLGPROC)Dialog); //chargement de la boite de dialogue
return (0);
}

Pkoi tu initialise une structure WNDCLASSEX ? Tu appelles ici une dialogbox, ca n'a rien a faire ici !

Ensuite, ds ton appel a la fonction DialogBox, Tu peux eviter le cast du 4eme param en prototypant bien ta fonction :

BOOL CALLBACK DlgProc(..)
et non LRESULT...

WM_INITDIALOG doit renvoyer 1, donc TRUE et non pas FALSE.

Bon ben c tt pour le moment.

++

signaler à un administrateur
Commentaire de vecchio56 le 10/10/2004 12:22:45 administrateur CS

Salut,

Pour les en-têtes précompilés, c'est vrai que c'est interessant pour les gros projets, mais la on ne peut pas dire que cce soit vraiment le cas.

wcex.lpszClassName = "FENETRES"; ce genre d'affectation se fait a la déclaration, sinon utiliser strcpy

Pourquoitu utilises des new et delete, puisque tu as en heap?

signaler à un administrateur
Commentaire de younessfatima le 10/10/2004 13:50:19

hassan c youness je pense que les remarques données par les amis sont profitables.je te remercie pr l'exemple. Ms les amis un peu d'encouragemnet pr Hassan. :)

signaler à un administrateur
Commentaire de boumarsel le 10/10/2004 14:53:30

-reponse pour vacchio56: merci pour ta participation et tes conseils, generalement j'utilise les fonctions de heap pour les chaines qui sont longues ou demandent une reallocation frequente, et les fonctions standard comme "new" pour les chaines courtes. c'est pas juste comme methode?
-reponse pour youness: merci mon ami.
-reponse pour alexman: desolé, je perds pas mon temps à lire tes remarques et tes commentaires, l'autre weekend je t'ai ecris un long message pour t'expliquer beaucoup de choses, et critiquer un peu ta participation dans ce site. et par curiosité j'ai parti voir ton profile et j'ai jeté un coup d'oeil sur tes sources et tes reponses aux forums, et tout ce que j'ai fait après c'est effacer mn message sans te l'envoyer, et decider de te negliger.merci pour ta comprhension

signaler à un administrateur
Commentaire de AlexMAN le 10/10/2004 14:58:31

whaa, ca me met un coup serieux, ok je comprends, jsui dsl donc de ma participation au site.

Aurevoir

signaler à un administrateur
Commentaire de Gendal67 le 16/10/2004 08:58:18

pffff, vous allez encore vous disputez comme ça longtemps ?? Vous etes tous des programmeurs! Nous sommes tous une unité alors aider vous et écouter vous mutuellement bon sang!!! N'agissez pas comme les trois quarts de gens débiles de ce monde!!
....allez, réconsillié vous! Entre parenthèse, moi aussi quand je met un commentaire, on me le "critique", mais ce n'est jamais une mauvaise critique c'est toujours pour essayer que je fasse mieux!! Faut pas s'enerver pour si peu bon sang....le potentiel de chacun est grand, et si on partage ce que l'on sait, on y ai tous gagnant ! :-))

Voila, dsl, 'pouvais pas supporté de voir une querelle sur ce genre de site!! bisous a tous!! :-)

Gendal67, a votre service !

signaler à un administrateur
Commentaire de boumarsel le 16/10/2004 15:24:03

tu as tout a fait raison gendal, moi et alexman, nous avons deja regle ce probleme par des messages en pive.
je vois que vecchio n'a pas encore repondu a ma kestion...

signaler à un administrateur
Commentaire de younessfatima le 17/10/2004 00:05:33

Enfin on peut dire que tout le monde est satisfait. Le calme régne...buffffff....C cool.
je veux juste poser une question concernant les BDs et VC++? Un tuto ou un exple?

signaler à un administrateur
Commentaire de boumarsel le 17/10/2004 07:24:07

vaut mieux poser ta kestion ds le forum, ca te permetra davoir + de reponses

signaler à un administrateur
Commentaire de vecchio56 le 17/10/2004 16:37:34 administrateur CS

Désolé j'avais pas vu qu'il y avait une question... En fait je ne sais pas vraiment, mais je pense qu'un new est en fait un HeapAlloc caché, donc autant appeler directement HeapAlloc. Dans tous les cas je pense que ce n'est pas très propre de mélanger des new et des HeapAlloc, de même qu'on ne mélange pas des new et des malloc

signaler à un administrateur
Commentaire de boumarsel le 17/10/2004 17:10:16

j'ai lu ds des articles en MSDN que les fonction standard d'allocation (ex:new ) sont plus rapide que les fonctions de heap, qui peuvent causer des problemes si on les appelle tres souvent.je te donnerai les  titres des articles +tard
merci

signaler à un administrateur
Commentaire de BruNews le 17/10/2004 18:03:41 administrateur CS

new appelle HeapAlloc().
On peut regrouper en 1 seul appel:
char *p = new char[12];
char *c = (char*) HeapAlloc(hHeap,0, len);

peut devenir en + rapide:
char *p, *c;
char *p =  (char*) HeapAlloc(hHeap,0, len + 12);
c = p + 12;
// algo ici
HeapFree(hHeap, 0, p);

signaler à un administrateur
Commentaire de vecchio56 le 17/10/2004 18:32:24 administrateur CS

char *p, *c;
char *p =  (char*) HeapAlloc(hHeap,0, len + 12);
c = p + 12;
// algo ici
HeapFree(hHeap, 0, p);

erreur: p est déja défini dans cette portée!

signaler à un administrateur
Commentaire de BruNews le 17/10/2004 18:34:01 administrateur CS

enleve '*' en trop animal !!! si c'est tout ce que t'avais a corriger....

signaler à un administrateur
Commentaire de boumarsel le 19/10/2004 22:56:17

je pense que le code est juste sans aucune modification, en plus on peut allouer tout l'espace (len+12) pour 'p' ds des parties du code ou` on ne fait pas referance a` 'c' (et son contenu n'a pas d'importance), sinon on se limite a` la taille 12.
merci

signaler à un administrateur
Commentaire de BruNews le 19/10/2004 22:59:19 administrateur CS

c'etait du au 'copier coller', fallait bien sur:

char *p, *c;
p =  (char*) HeapAlloc(hHeap,0, len + 12);
c = p + 12;
// algo ici
HeapFree(hHeap, 0, p);

signaler à un administrateur
Commentaire de boumarsel le 20/10/2004 18:36:26

oui biensur, personnellement je peux pas ecrire un message juste pour signalier une telle erreur :)) 'te fache pas vecchio:)'...
j'ai une autre question pour toi brunews,
est ce qu'on peut nous servir des données de la structure MEMORY_BASIC_INFORMATION  (remplie par VirtualQueryEx) pour connaitre la taille de la memoire physique consommée par un processus?
autrement dit est ce que les informations de la memoire virtuelle peuvent nous indiquer la taille de la memoire physique?
je ne peux pas utiliser directement GetProcessMemoryInfo (de psapi.dll) parcequ'elle n'est inclue que ds winNT
merci

signaler à un administrateur
Commentaire de BruNews le 20/10/2004 18:48:48 administrateur CS

Utilise GlobalMemoryStatus() pour connaitre la taille de la memoire physique. La valeur sera erronee si tu as un PC avec + de 4 Go de RAM.

signaler à un administrateur
Commentaire de boumarsel le 20/10/2004 19:08:59

ma kestion est :
'est ce qu'on peut nous servir des données de la structure MEMORY_BASIC_INFORMATION  (remplie par VirtualQueryEx) pour connaitre la taille de la memoire physique consommée par un processus?'
consommée par un seul processus (exemple: Vstudio.net environ 34Mo) et non pas la taille de la memoire physique du PC.
merci

signaler à un administrateur
Commentaire de BruNews le 20/10/2004 19:20:40 administrateur CS

Cette structure sert a explorer ton espace d'adressage, faudraensuite interpreter les donnees.
Regarde dans Richter, il y a des exemples entiers sur l'analyse de la memoire virtuelle.

Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Comparez les prix Nouvelle version

Photothèque Nouveau !



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
Temps d'éxécution de la page : 0,250 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.