snpier wolf
Messages postés216Date d'inscriptionsamedi 11 août 2007StatutMembreDernière intervention30 mai 2011
-
24 sept. 2007 à 23:57
snpier wolf
Messages postés216Date d'inscriptionsamedi 11 août 2007StatutMembreDernière intervention30 mai 2011
-
15 mai 2008 à 08:58
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:
<hr />
#include <conio.h>
#include
#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
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)
<hr />
alore j'ais mit mon nom a la place de:
<hr />
char login[] = "effacer ceci et tapé votre login";
char login[] = "Wolf";
<hr />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++
DeAtHCrAsH
Messages postés2670Date d'inscriptionvendredi 25 janvier 2002StatutMembreDernière intervention 6 février 2013 25 sept. 2007 à 09:33
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.
DeAtHCrAsH
Messages postés2670Date d'inscriptionvendredi 25 janvier 2002StatutMembreDernière intervention 6 février 2013 25 sept. 2007 à 14:14
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.
snpier wolf
Messages postés216Date d'inscriptionsamedi 11 août 2007StatutMembreDernière intervention30 mai 2011 25 sept. 2007 à 19:16
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++
Pistol_Pete
Messages postés1053Date d'inscriptionsamedi 2 octobre 2004StatutMembreDernière intervention 9 juillet 20137 26 sept. 2007 à 15:59
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?
snpier wolf
Messages postés216Date d'inscriptionsamedi 11 août 2007StatutMembreDernière intervention30 mai 2011 26 sept. 2007 à 18:53
ok meci mais j'ai trouve en cour de rout .
j'ai fais comme sa :
<hr /> SetFocus(hWndEdit);
char szTexte[10];
GetWindowText(hWndEdit,szTexte,sizeof(szTexte));
snpier wolf
Messages postés216Date d'inscriptionsamedi 11 août 2007StatutMembreDernière intervention30 mai 2011 15 mai 2008 à 08:58
je suis désolé quand je relis tous mes questions je me mare, j'ais l'imprétion que j'étais c**, dsl pour toutes les questions débile(dsl pour le terme) que j'ais posé sur ce site, et merci à vous tous qui mon aidé à mes début...