Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1210 connectés 

  FORUM HardWare.fr
  Programmation
  C

  API win32

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

API win32

n°1206633
kmeleon1
Ubuntu Forweeeeever
Posté le 24-09-2005 à 21:08:43  profilanswer
 

Salut à tous
 
Voilà je viens de finir mon code (je débute) pour trouver des nombres premiers (algorythme tout simple, mais c'est pas la question :p)
 

Code :
  1. #include <stdio.h>
  2. #include <math.h>
  3. int main()
  4. {
  5.     // Définition des variables
  6.     int nombre;
  7.     int racine,nb,verif,non_premier,total,pcent,start;
  8.     int pcent_old=0;
  9.     int atteindre=9000;
  10.     float division;
  11.    
  12.     //################################
  13.     nombre = 3; // Nombre de départ  #
  14.     //################################
  15.    
  16.     start = 1;
  17.     total = 0;
  18.    
  19.     FILE *fp = fopen("premiers.txt", "w" );
  20.    
  21.     printf ("Recherche des nombres premiers jusqu'a %d \n\n", atteindre);
  22.     while (nombre < atteindre){
  23.      
  24.        // Part du principe que le nombre est premier
  25.        non_premier = 0;
  26.        nb = 2 ;
  27.      
  28.        //Calcule la racine entière du nombre
  29.        racine = sqrt(nombre);
  30.      
  31.        while (nb != racine+1){
  32.              division = ((float)nombre/(float)nb);
  33.              verif = (int)division;
  34.              if (division == verif){
  35.                 non_premier = non_premier+1;
  36.              }
  37.              nb = nb+1;
  38.        }
  39.      
  40.        // Si le nombre est premier
  41.        if (non_premier == 0){
  42.           total = total+1;           
  43.          
  44.                 // Ecrit le nombre premier dans le fichier
  45.                 fprintf(fp, "%d\n", nombre);
  46.        }
  47.        pcent = 100/atteindre*nombre;
  48.        printf ("%d", pcent);
  49.        if (pcent != pcent_old){
  50.           pcent_old = pcent;
  51.           printf ("Travail en cours: %d%             %d nombres premiers trouvés\n", pcent, total);
  52.        }
  53.           nombre = nombre+2;
  54.     }
  55.     fclose(fp);
  56.     return 0;
  57. }


 
Voilà je voudrais (tout simplement :d) savoir comment faire pour créer une boite de dialogue (en utilisant l'API win32 => windows.h) et afficher les sastistiques en temps réel (nombres premiers trouvés, sur combien de nombres, pourcentage) sans utiliser de graphique ni quoi que ce soit de trop dur, je veux juste afficher une ou deux variables qui se réactualise en temps réel...
 
J'ai un peu cherché sur le web, mais les explications fournies sont bien trop complexes pour un débutant tel que je suis :(
 
Bonne soirée ;)


---------------
.:: Kmeleon ::.
mood
Publicité
Posté le 24-09-2005 à 21:08:43  profilanswer
 

n°1206638
karlkox
Posté le 24-09-2005 à 21:20:53  profilanswer
 
n°1206639
jesus_chri​st
votre nouveau dieu
Posté le 24-09-2005 à 21:21:09  profilanswer
 

MessageBox ne doit pas être trop dur à utiliser, après les boites de dialogue complètes c'est plus compliquer (il faut des fonctions callback si je me souviens bien...)

n°1206654
chrisbk
-
Posté le 24-09-2005 à 21:39:54  profilanswer
 

bin ouais, fo definir le template de ta boite de dialog (dans l'editeur a VS, egnre), pis apres fo definir la callback qui gere les messages
 
c'est du bonheur a tartiner

n°1206658
kmeleon1
Ubuntu Forweeeeever
Posté le 24-09-2005 à 21:41:13  profilanswer
 

ok merci beaucoup je vais voir ca, mais ca m'insipire pas trop ce que tu dis chrisbk :p


---------------
.:: Kmeleon ::.
n°1206666
chrisbk
-
Posté le 24-09-2005 à 21:45:24  profilanswer
 

bah heuh

Code :
  1. #include "resource.h"
  2. ...
  3. BOOL CALLBACK maProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
  4. {
  5.     switch(msg) {
  6.        case WM_COMMAND:
  7.           switch(LOWORD(wParam)) {
  8.                   case IDOK:
  9.                   case IDCANCEL:
  10.                        EndDialog(hWnd, 1);
  11.                    break;
  12.           }
  13.        }
  14.    return FALSE;
  15. }
  16. ...
  17. DialogBoxParam(hInstance, MAKEINTRESOURCE(IDD_MADIALOG), NULL, maProc,0);


 
Superbe non ?
 
tapé de tete, donc y'a ptet des couilles. Cherche la doc msdn sur DialogBoxParam et heuh, joue avec l'editeur de dialog a VS
 

n°1206678
kmeleon1
Ubuntu Forweeeeever
Posté le 24-09-2005 à 22:04:00  profilanswer
 

J'avoue que je comprend rien, quelqu'un aurait pas MSN pour m'expliquer comment marche les fenetres parce que je capte rien du tout là !!!


---------------
.:: Kmeleon ::.
n°1206681
kmeleon1
Ubuntu Forweeeeever
Posté le 24-09-2005 à 22:05:21  profilanswer
 

Ou à la limite (je sais que c'est interdit mais ca m'aiderai beaucoup beaucoup), si quelqu'un pouvait me faire une toute pitite portion de code qui pourait ressembler à une msgbox comme on en fesait en VBS avec des variables qui change dans la fenetre ca serait vraiment génial :d


---------------
.:: Kmeleon ::.
n°1206683
Emmanuel D​elahaye
C is a sharp tool
Posté le 24-09-2005 à 22:05:50  profilanswer
 

kmeleon1 a écrit :

Voilà je viens de finir mon code (je débute) pour trouver des nombres premiers (algorythme tout simple, mais c'est pas la question :p)


Pas mal d'erreurs dans ce code...


main.c: In function `main_':

 

main.c:31: warning: passing arg 1 of `sqrt' as floating rather than integer due to prototype
main.c:36: warning: comparing floating point with == or != is unsafe
main.c:53: warning: repeated ` ' flag in format
main.c:53: warning: repeated ` ' flag in format
main.c:53: warning: repeated ` ' flag in format
main.c:53: warning: repeated ` ' flag in format
main.c:53: warning: repeated ` ' flag in format
main.c:53: warning: repeated ` ' flag in format
main.c:53: warning: repeated ` ' flag in format
main.c:53: warning: repeated ` ' flag in format
main.c:53: warning: repeated ` ' flag in format
main.c:53: warning: repeated ` ' flag in format
main.c:53: warning: repeated ` ' flag in format
main.c:53: warning: repeated ` ' flag in format

 

main.c:53: warning: conversion lacks type at end of format


Le problème de la ligne 53 est le '%' tout seul qui est une erreur. Tu dois mettre "%%" pour afficher '%'

 

Il est curieux d'impliquer les nombres flottants dans un algorithme destiné à trouver des nombres premiers dont la définition s'appuie exclusivement sur des nombres entiers et des divisions du même sexe.

Citation :


Voilà je voudrais (tout simplement :d) savoir comment faire pour créer une boite de dialogue (en utilisant l'API win32 => windows.h) et afficher les sastistiques en temps réel (nombres premiers trouvés, sur combien de nombres, pourcentage) sans utiliser de graphique ni quoi que ce soit de trop dur, je veux juste afficher une ou deux variables qui se réactualise en temps réel...


La programmation Windows, ça ne s'improvise pas. C'est tout un art, et il y a pas mal de concepts à comprendre (qui n'ont rien à voir avec le langage C) comme la programmation par évènements.

 

Je te conseille de commencer par apprendre le C standard (ligne de commande, mode texte dit 'console'), et une fois que tu maitriseras le C, tu pourras te lancer dans la programmation Windows par l'API Win32. L'aspect 'présentation' n'est pas le plus important quand on commence la programmation. On peut, pendant très longtemps, se contenter du mode texte, et il existe même des applications très puissantes qui n'ont aucun effet sur la console. Bien sûr, si tu es un drogué du clickodrome, je comprends que ça te démange. Si c'est le cas, sache que le C est le dernier des langages pour programmer efficacement (rapidement) du GUI. Voir plutôt Python ou Ruby, voire Delphi/Kylix (pas très portable...)

 

Si tu tiens à programmer du GUI en C, une surcouche portable comme GTK+ peut grandement simplifier le travail.

 

Pour en revenir à ton code. Il fonctionne à peu près (à part que 2 est premier)

 

Après légère mise au point et réorganisation des variables (réduction de la porté, modularisation), les valeurs trouvées sont conformes à

 

http://noe-education.org/D11102.php


#include <stdio.h>
#include <math.h>
#include <float.h>

 

#define FNAME "../data/primes.txt"

 

int main (void)
{
   FILE *fp = fopen (FNAME, "r" );

 

  if (fp != NULL)
   {
      int const atteindre = 9000;
      int nombre = 2;           /* Nombre de depart  */
      int total = 0;
#if 0
      int pcent_old = 0;
#endif
      printf ("Recherche des nombres premiers jusqu'a %d \n\n", atteindre);

 

     while (nombre < atteindre)
      {
         int racine;
         int nb = 2;
         /* Part du principe que le nombre est premier */
         int non_premier = 0;

 

        /* Calcule la racine entière du nombre */
         racine = sqrt ((double) nombre);

 

        while (nb != racine + 1)
         {
            double division = (double) nombre / nb;
            {
               int verif = division;
               if ((division - verif) < FLT_EPSILON)
               {
                  non_premier++;
               }
            }
            nb++;
         }

 

        /* Si le nombre est premier */
         if (non_premier == 0)
         {
            total++;

 

           /* Ecrit le nombre premier dans le fichier */
            {
               int premier;
               int n = fscanf (fp, "%d", &premier);

 

              if (n == EOF)
               {
                  printf ("EOF\n" );
                  break;
               }
               
               if (premier != nombre)
               {
                  printf ("erreur : %d au lieu de %d\n", nombre, premier);
                  break;
               }
            }
         }
#if 0
         {
            int pcent;
            pcent = 100 / atteindre * nombre;
            printf ("%d", pcent);

 

           if (pcent != pcent_old)
            {
               pcent_old = pcent;
               printf ("Travail en cours: %d%%             %d nombres premiers trouvés\n", pcent, total);
            }
         }
#endif
         nombre += 2;
      }

 

     fclose (fp);
   }
   else
   {
      perror (FNAME);
   }
   return 0;
}


Message édité par Emmanuel Delahaye le 03-02-2007 à 23:37:07

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°1206686
kmeleon1
Ubuntu Forweeeeever
Posté le 24-09-2005 à 22:11:19  profilanswer
 

Emmanuel je pense pas franchement que mettre à jour à l'écran quelques variables dans une ptite boîte de dialogue ca nécessite d'etre normalien et d'avoir fait la Polytechnic School of London (respect :))
 
Si j'ai un code qui m'affiche et réactualise la variable a et b, moi je suis content je m'en inspire et je fais plus chier personne :p (j'ai bien fait comme ca pour le php, bon c'est pas du super haut niveau mais c'est déjà pas mal).


---------------
.:: Kmeleon ::.
mood
Publicité
Posté le 24-09-2005 à 22:11:19  profilanswer
 

n°1206722
Emmanuel D​elahaye
C is a sharp tool
Posté le 24-09-2005 à 22:43:44  profilanswer
 

kmeleon1 a écrit :

Emmanuel je pense pas franchement que mettre à jour à l'écran quelques variables dans une ptite boîte de dialogue ca nécessite d'etre normalien et d'avoir fait la Polytechnic School of London (respect :))


Je n'ai pas dit ça. J'ai simplement rappelé le fait que ça ne s'improvisait pas en bidouillant sur un coin de table. Maintenant, tu en fais ce que tu veux...


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°1206730
chrisbk
-
Posté le 24-09-2005 à 22:51:32  profilanswer
 

soit pas si guindé, on est pas mal a avoir appris en bricolant sur un coin de table, plus tard on peut remettre ca d'aplomb

n°1206732
kmeleon1
Ubuntu Forweeeeever
Posté le 24-09-2005 à 22:52:56  profilanswer
 

je t'aime bien toi !


---------------
.:: Kmeleon ::.
n°1206734
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 24-09-2005 à 23:01:03  profilanswer
 

en meme temps, il a raison le manu ! win32 c'est pas pour le péquin moyen ! ça se mérite, un tel pouvoir entre les mains !

n°1206735
kmeleon1
Ubuntu Forweeeeever
Posté le 24-09-2005 à 23:02:23  profilanswer
 

Personnellement j'préfère avoir le pouvoir de faire tourner une apps sous linux que sous windaube... enfin bon c'est une affaire de gout :d


---------------
.:: Kmeleon ::.
n°1206742
Emmanuel D​elahaye
C is a sharp tool
Posté le 24-09-2005 à 23:20:28  profilanswer
 

kmeleon1 a écrit :

Personnellement j'préfère avoir le pouvoir de faire tourner une apps sous linux que sous windaube... enfin bon c'est une affaire de gout :d


Alors qu'est-ce que tu viens nous p*ter les c***ll*s avec Win32 ? Amuse toi avec X.11 et KDE... Ou GTK+ qui permet de faire la même chose (à peu près) sous les deux systèmes (et d'autres).


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°1206745
chrisbk
-
Posté le 24-09-2005 à 23:24:37  profilanswer
 

Emmanuel Delahaye a écrit :

Alors qu'est-ce que tu viens nous p*ter les c***ll*s avec Win32 ? Amuse toi avec X.11 et KDE... Ou GTK+ qui permet de faire la même chose (à peu près) sous les deux systèmes (et d'autres).


 
ah la je suis d'accord, kmeleon retourne sur ton os paleolithique et continu a te battre contre les trilobites :o

n°1206746
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 24-09-2005 à 23:27:28  profilanswer
 

je crois que manu a calmé léon :o

n°1206747
chrisbk
-
Posté le 24-09-2005 à 23:28:00  profilanswer
 

excellent jeu de mot [:icon9]

n°1206748
manatane
En vous remerciant, bonsoir
Posté le 24-09-2005 à 23:29:18  profilanswer
 

Je profite de l opportunite de cette aimable discussion, pour signaler l existence de PyQt, qui est multiplateforme (windows, unix, OSX) et qui dechire du slip, vraiment.

n°1206750
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 24-09-2005 à 23:30:29  profilanswer
 

manatane a écrit :

Je profite de l opportunite de cette aimable discussion, pour signaler l existence de PyQt, qui est multiplateforme (windows, unix, OSX) et qui dechire du slip, vraiment.


PyQT c'est QT pour Python [:vague nocturne]

n°1206751
chrisbk
-
Posté le 24-09-2005 à 23:30:37  profilanswer
 

HORS SUJET §§§§

n°1206756
manatane
En vous remerciant, bonsoir
Posté le 24-09-2005 à 23:35:59  profilanswer
 

Harkonnen a écrit :

PyQT c'est QT pour Python [:vague nocturne]


[:a_bon]

n°1206757
Emmanuel D​elahaye
C is a sharp tool
Posté le 24-09-2005 à 23:37:45  profilanswer
 

Harkonnen a écrit :

je crois que manu a calmé léon :o


[:rofl]


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°1206813
kmeleon1
Ubuntu Forweeeeever
Posté le 25-09-2005 à 10:12:30  profilanswer
 

Oui mais moi j'veux faire cette apps sous windows :d !!!


---------------
.:: Kmeleon ::.
n°1206814
Emmanuel D​elahaye
C is a sharp tool
Posté le 25-09-2005 à 10:15:56  profilanswer
 

kmeleon1 a écrit :

Oui mais moi j'veux faire cette apps sous windows :d !!!


Dans ce cas, retour à la case départ : apprendre la programmations GUI sous Windows. Un bon livre : Le Petzold édition 5 (En bibliothèque, car introuvable en librairie).
 
Apparement, existe encore à la vente en anglais...
 
http://www.charlespetzold.com/pw5/

Message cité 2 fois
Message édité par Emmanuel Delahaye le 25-09-2005 à 10:17:57

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°1206815
jesus_chri​st
votre nouveau dieu
Posté le 25-09-2005 à 10:23:47  profilanswer
 

Emmanuel Delahaye a écrit :

Dans ce cas, retour à la case départ : apprendre la programmations GUI sous Windows. Un bon livre : Le Petzold édition 5 (En bibliothèque, car introuvable en librairie).
 
Apparement, existe encore à la vente en anglais...
 
http://www.charlespetzold.com/pw5/


Dans ce cas je conseillerai d'apprendre la programmation graphique et pas seulement la prog win32.
Genre apprendre wxWidgets ou QT ou au pire GTK (mais c'est du C). Win32 j'en ai fait bcp autrefois, ça permet de faire des softs très compacts et très réactifs car tu ne mets que le strict nécessaire. Par contre niveau portabilité c'est 0 et qd microsoft changera son API pour passer en .Net natif, tes connaissances --> poubelle.
 
Donc commence direct par un wrapper, C++ si possible car l'héritage s'applique merveilleusement bien dans ce cas. Genre pour la boite de dialogue du dérive de "Dialog" (une classe standard) et tu redefinie juste les méthodes qui faut, plus besoin de DefaultWinProc ou autres...

n°1510491
Sve@r
Posté le 03-02-2007 à 19:12:20  profilanswer
 

Emmanuel Delahaye a écrit :

Un bon livre : Le Petzold édition 5 (En bibliothèque, car introuvable en librairie).


 
Disponible chez Hachette et donc sur commande dans toute librairie qui se respecte (http://larenaissance.site.voila.fr) pour 49€ (ISBN: 2100064797 - EAN13: 9782100064793 - Code Hachette: 6442446)


Message édité par Sve@r le 03-02-2007 à 19:14:02

---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
n°1510496
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 03-02-2007 à 19:27:47  profilanswer
 

t'as pas l'impression de déterrer un topic vieux de 2 ans là ? :o
ceci dit, merci pour ce déterrage, ça m'a permis de me repayer une bonne tranche de rire comme seul le regretté chrisbk savait nous en offrir :D
 
:sweat:

n°1510498
Sve@r
Posté le 03-02-2007 à 19:36:12  profilanswer
 

Harkonnen a écrit :

t'as pas l'impression de déterrer un topic vieux de 2 ans là ? :o


Ah ? Il y a prescription sur les topic ???? :sol:  
 
En fait je cherchais un autre topic et je suis tombé sur celui-là. De toute façon l'info, elle, est récente (je bosse aussi dans la librairie donnée en URL, que j'ai d'ailleurs fait visiter à Elmoricq, et j'ai donc accès à des outils de recherche privés chez les éditeurs en question)...
 

Harkonnen a écrit :

ceci dit, merci pour ce déterrage, ça m'a permis de me repayer une bonne tranche de rire comme seul le regretté chrisbk savait nous en offrir :D
 
:sweat:


Oui, j'ai lu ses posts en détail... :(

Message cité 1 fois
Message édité par Sve@r le 03-02-2007 à 19:37:36

---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
n°1510528
Emmanuel D​elahaye
C is a sharp tool
Posté le 03-02-2007 à 23:39:40  profilanswer
 

Sve@r a écrit :

Ah ? Il y a prescription sur les topic ???? :sol:  
 
En fait je cherchais un autre topic et je suis tombé sur celui-là. De toute façon l'info, elle, est récente (je bosse aussi dans la librairie donnée en URL, que j'ai d'ailleurs fait visiter à Elmoricq, et j'ai donc accès à des outils de recherche privés chez les éditeurs en question)...
 
 
Oui, j'ai lu ses posts en détail... :(


Ce topic appartient a l'histoire...
 


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  API win32

 

Sujets relatifs
C & API Win32: région invalide à réafficher..API Win32
Api Win32 : CreateRemoteThreadListe (en fçais) des API Win32 ?
[Api windows (win32) / C] Edition d'un subitem dans une listviewApi Win32 : je n'arrive pas à griser une option de menu
API Win32 : problème avec le message WM_KEYDOWNWin32 API : Lire la charge CPU [Résolu]
[C++] API Win32API Win32 - Paramétrage d'une appli dépendant de l'utilisateur
Plus de sujets relatifs à : API win32


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR