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++