begin process at 2012 05 29 15:40:20
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Divers

 > 

Débutant(e)

 > 

petit problème de saisie


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

petit problème de saisie

lundi 24 septembre 2007 à 23:57:19 | petit problème de saisie

snpier wolf

Bonjours ou bon soir à tous,
voila j'ais fait un bou de code en win32 et il marche.
il marche ?non.
il y a un petit  truc qui ne marche pas, quand je m'es mon nom dans l'espace login et que j'appuye sur valider sa m'envois le message :
LOGIN OU PASS ERRORE.

le code:



#include <conio.h>
#include <iostream>
#include <fstream>
#include <windows.h>
#include <string.h>
using namespace std;
#define   IDB_Valide         100 //  bouton Valider
#define   IDE_EDIT            109 // contrôle EDIT
#define   IDE_EDIT1           110 // contrôle EDIT
fstream f;//Le filestream utilisé pour les manipulations de fichiers
char login[] = "effacer ceci et tapé votre login";
   char pass[] = "effacer ceci et tapé votre pass";
           
HWND hWnd;
// Boutons :
        
HWND hwndButtonValider;
// EDIT
HWND hWndEdit1;
HWND hWndEdit;
const HBRUSH hCouleur_BTNFACE = CreateSolidBrush (RGB(210,220,230));
// Création d'une fonte pour la personnalisation des boutons et du contrôle static.
HINSTANCE hInst;

LRESULT CALLBACK  WndProc(HWND, UINT, WPARAM, LPARAM) ;

char szClassName[ ] = "Fenêtre Windows simple avec boutons";
CREATESTRUCT Parent;
char szTextStatic1[500];
// Fonction WinMain ; point d'entrée du code.
int WINAPI WinMain (HINSTANCE hThisInstance,
                    HINSTANCE hPrevInstance,
                    LPSTR lpcmdLine,
                    int nCmdShow)
{ hInst = hThisInstance;
// Fenêtre  
 HWND hWnd;
 MSG  msg;
 WNDCLASSEX wincl;
    wincl.cbSize = sizeof(WNDCLASSEX);
 wincl.style = CS_HREDRAW | CS_VREDRAW; // Style de la classe
 wincl.lpfnWndProc = WndProc; // Procédure utilisé par la classe szAppName
 wincl.cbWndExtra = 0;  // Non utilisé pour l'instant
 wincl.cbClsExtra = 0;  // Non utilisé pour l'instant
 wincl.hInstance = hThisInstance;
 wincl.hIcon = LoadIcon(NULL, IDI_APPLICATION);
 wincl.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
 wincl.hCursor = LoadCursor (NULL, IDC_ARROW);
    wincl.hbrBackground = hCouleur_BTNFACE;
 wincl.lpszMenuName = NULL; // Pas de menu.
 wincl.lpszClassName = szClassName;
 // Enregistrement de la classe de la fenêtre
 if(!RegisterClassEx(&wincl))
 {
  MessageBox (NULL,"Classe non enregistrée",szClassName,MB_OK);
  return 0;
 }
 hWnd = CreateWindowEx (0,szClassName, "Etude des contrôles dans une fenêtre simple",
 WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX | WS_VISIBLE|WS_MAXIMIZEBOX,CW_USEDEFAULT,
CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,hThisInstance,
         NULL);
     
 ShowWindow (hWnd, SW_MAXIMIZE); 
 UpdateWindow(hWnd);
 // Boucle de traitement des messages :
 while(GetMessage(&msg,NULL,0,0))
 {
  TranslateMessage(&msg);
  DispatchMessage(&msg);}
 return msg.wParam;}// Fin de la fonction WinMain() ------------------------------------------------

// Procédure de traitement des messages de la fenêtre

LRESULT CALLBACK  WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
 switch (message)
 {
 case WM_CREATE : // -------------------------------------------------------
        {
hwndButtonValider =  CreateWindowEx(0, "BUTTON", "Valider",
                  WS_CHILD |BS_PUSHBUTTON |WS_VISIBLE ,
                              460, 70,  100, 30,   hWnd,  (HMENU) IDB_Valide,
         Parent.hInstance, NULL );  // Arg 11 : Méthode de base.
  

   // Création des contrôles EDIT

   char szTexte[12] = "CLASSE EDIT";


    
   hWndEdit =               CreateWindowEx(0, "EDIT", szTexte,
                                  WS_CHILD | ES_LEFT| WS_BORDER |WS_VISIBLE,
                                  350, 10, 320,  20,hWnd, (HMENU)IDE_EDIT  ,
                                  (HINSTANCE)GetWindowLong(hWnd, GWL_HINSTANCE),  NULL);

   hWndEdit1 =             CreateWindowEx(0, "EDIT", "",
                                  WS_CHILD | ES_LEFT| WS_BORDER | WS_VISIBLE,
                                  350, 40, 320,  20,hWnd, (HMENU)IDE_EDIT1   ,
                                  (HINSTANCE)GetWindowLong(hWnd, GWL_HINSTANCE),  NULL);
    SetWindowText ( hWndEdit ,login);
   SetWindowText ( hWndEdit1 , pass);}
    case WM_COMMAND : // ------------------------------------------------------
         { // click sur le bouton Valider de la fenêtre :
      if (LOWORD(wParam) == IDB_Valide && HIWORD(wParam) == BN_CLICKED)

    { 
    
    int ff;//Le nombre de caractères de l'espace tampon.
    char *cf;//L'espace tampon qui va stocker les données des fichiers
    char txt[]="login.txt";//La chaine à ouvrire

    f.open(txt, ios::in | fstream::binary);//Ouvrir le fichier en lecteur
    f.seekg(0, ios::end);//Trouver la fin du fichier
    ff = f.tellg();//Lire le nombre d'octets
    f.seekg(0, ios::beg);//Revenir au début
    cf = new char [ff+1];//Redimensionner l'espace tampon avant
    f.read(cf, ff); //d'accueilir les données
    cf[f.gcount()] = 0;
    f.close();//Sans oublier de fermer le filestream
    fstream r;//idem que login
int fx;//idem
char *rf;//idem
char ts[]="code.txt";//idem

 

r.open(ts, ios::in | fstream::binary);//idem
r.seekg(0, ios::end);//idem
fx = r.tellg();//idem
r.seekg(0, ios::beg);//idem
rf = new char [fx+1];//idem
r.read(rf, fx);//idem
rf[r.gcount()] = 0;
r.close();
//saisie du login  
 if(strcmp(login, cf))
{
 int faux= MessageBox(hWnd, "LOGIN OU PASS ERRORE" ,szClassName, MB_YESNO ); 
      return 0;}
                  else{}
    }
                return 0;} // Fin traitement WM-COMMAND / proc---------------------------
case WM_CLOSE:  // --------------------------------------------------------
       {
       int nQuit = MessageBox(hWnd, "Vous voulez réellement quitter",
                       szClassName, MB_YESNO | MB_ICONQUESTION);
                       if(nQuit == IDNO) {return 0;}
                       DestroyWindow( hWnd );
            break; } // fin case WM_CLOSE -------------------------------------------------
            case WM_DESTROY : //-------------------------------------------------------
           {
  PostQuitMessage(0);
   return 0;} }
return DefWindowProc(hWnd,message,wParam,lParam);
} // Fin de la procédure de traitement des messages de la fenêtre
LRESULT CALLBACK ProcEnfant1(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)

{
         switch (message)
 {
case WM_SYSCOMMAND :

  switch(wParam)

  {case SC_CLOSE :
                 return 0;
                  default :
        return DefWindowProc(hWnd,message,wParam,lParam);}
           return 0;}
           return DefWindowProc(hWnd,message,wParam,lParam);
}



alore j'ais mit mon nom a la place de:

char login[] = "effacer ceci et tapé votre login";
char login[] = "Wolf";

et la sa marche.
mais quend je le change a l'endroit ou il faut écrire,même si je mais un autre nom, sa marche alors que sa ne devrais pas.
POUR QUOI NE PREND T'IL PAS MA SAISIE ?
ps: dsl pour les fauts et le code je ne l'ais pas écris en entier,j'ais prie des bous de code parci par la donc il y a des truc que je ne comprends pas .
Mais sa vien gentilement
merci d'avence pour vos réponse.
A++
mardi 25 septembre 2007 à 09:18:20 | Re : petit problème de saisie

BruNews

Administrateur CodeS-SourceS
http://brunews.com/brunews/download/CP5.zip
http://brunews.com/brunews/download/CP5Sources.zip
C'est du code COMPLET qu'il faut prendre chez Petzold.
On ne fait pas du Win32 en C par tatonnement, c'est pas du VB.

ciao...
BruNews, MVP VC++
mardi 25 septembre 2007 à 09:33:22 | Re : petit problème de saisie

DeAtHCrAsH

Une fois de plus, télécharger Visual C++ Express 2005 (gratuit) et utilisez les fichiers de ressources plutot que de vous faire chier avec tout ce code.
Non seulement ca va soulager votre code mais en plus ca vous evitera des erreurs. 

Shell
mardi 25 septembre 2007 à 09:53:03 | Re : petit problème de saisie

BruNews

Administrateur CodeS-SourceS
Il faut ajouter à ceci qu'une ressource compilée sera chargée énormément plus vite qu'une série d'appels CreateWindow.

ciao...
BruNews, MVP VC++
mardi 25 septembre 2007 à 12:41:05 | Re : petit problème de saisie

snpier wolf

Merci pour ces conseil mais vc je ni comprends rien alors que dev-C++ oui .
 BruNews merci pour les fichiers sources.
A++

mardi 25 septembre 2007 à 14:14:33 | Re : petit problème de saisie

DeAtHCrAsH

A titre de conseil, si tu souhaites faire de la programmation ton métier, autant te metter directement dans le bain avec Visual Studio qui est incontournable.
Crois moi il est pas du tout compliqué a utiliser surtout si tu as l'habitude des soft miscrosoft. Ca reste très intuitif et ergonomique.
Télécharge le et si besoin nous t'aiderons si tu n'arrives pas a l'utiliser.

Shell
mardi 25 septembre 2007 à 19:16:58 | Re : petit problème de saisie

snpier wolf

salut,
je l'ais déja télécharger,
mais il est très différant de DEV-C++ et j'ais commencer avc ça, alors je ne comprends rien à vc.
mais j'ais commencer un peux à l'étudier.
juste pour ma question peux tu me donner la commande à fair car je veux quand même le terminer.
merci d'avence.
a++
mercredi 26 septembre 2007 à 15:59:27 | Re : petit problème de saisie

Pistol_Pete

Salut
Pour ton probleme, il faut que tu fasses plusieurs choses:
Déjà tout ton traitement pour comparer ton login se fait UNIQUEMENT à la création de ta fenêtre (message : WM_CREATE).
Capte le message lors que tu appuies sur le bouton     case IDB_Valide :

Et avant de comparer les deux chaines de caractère il faut que tu recupères la nouvelle chaine de caractère de ton edit avec la fonction : GetDlgItemText(hWnd,IDE_EDIT1,login,strlen(login));

Et dernière petite chose pourquoi lorsque la comparaison est fausse tu lances une dialogue box avec les bontons oui ET non?
mercredi 26 septembre 2007 à 16:08:30 | Re : petit problème de saisie

BruNews

Administrateur CodeS-SourceS
GetDlgItemText(hWnd, IDE_EDIT1, login, strlen(login));
NIET !!!

dernier param est la taille du buffer 'login' et non la strlen contenue au moment de l'appel.

ciao...
BruNews, MVP VC++
mercredi 26 septembre 2007 à 18:53:32 | Re : petit problème de saisie

snpier wolf

ok meci mais j'ai trouve en cour de rout .
j'ai fais comme sa :

           SetFocus(hWndEdit);
                        char szTexte[10];
  GetWindowText(hWndEdit,szTexte,sizeof(szTexte));
            



merci encors .

a++

1 2

Cette discussion est classée dans : login, wincl, hwnd, ws, wparam


Répondre à ce message

Sujets en rapport avec ce message

Win32 problème. [ par TeniX ] Salut, Voila j'ai crée de maniere simple une source qui exprime mon problème , je trouve pas la source du problème , enfaite quand les fenêtres sont l Refresh Fenetre Api Windows [ par wxccxw ] salut :) bon voila mon petit Probleme, je suis en train de faire une fenetre qui va afficher en temps reel la ram utilise !donc je recupere la ram tou pb affichage ComboBox dans Dialog [ par Guillemouze ] Salut tout le monde,j'ai un souci d'affichage de mon combo dans un dialog. Quand je click sur la fleche pour afficher la liste, il ne m'affiche rien!P Combox me bloquant l'appli [ par SnOOpss ] Bonjour j'ai essayé de simplifier au maximum mon code mais meme codé comme cela j'ai le meme probleme. Tant que je clique par sur le comboBox tout est [Dev-Cpp]Pb de compilation [ par Cyr62110 ] Voila mon probleme, j'ai fait la source suivante :#include #define _WIN32_IE 0x0500#include #include #define IDB_GO 100#define IDB_UPLOAD 101#define probleme bizzare.... [ par lektrosonic ] Bonsoir, j ai code ce client...Code C:#include #include #include #define ID_CONNECT 1#define ID_SEND 2#define WM_SOCKET (WM_APP + 100)<br Langage C++ [ par Tom56340 ] je me présente tom voila je suis pas non plus implacable sur l'informatique cependant je touche a tout et est un niveau satisfaisant qui me vaut de m souci C++ [ par Tom56340 ] je me présente tom voila je suis pas non plus implacable sur l'informatique cependant je touche a tout et est un niveau satisfaisant qui me vaut de m souci bouton C++ [ par Tom56340 ] bonjours voila j'ai un couci l'or de mon compile run j'ai mi un bouton donnée un non ect.. donner une valuer a ID_BOUTON "1"; mais cela ne marche


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
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,796 sec (4)

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