Accueil > Forum > > > > Pb avec strcpy et win32
Pb avec strcpy et win32
mardi 4 mai 2004 à 17:56:55 |
Pb avec strcpy et win32

ToToL
|
Bonjours je me suis mis depuis peut a la programation win32 et j'aurai besion de copier une chaine de caractere dans une variable ( char * text; ) mais si j'utilise strcpy j'ai un bugg windows qui me dit que la fonction a écrit en dehors de la memoire. j'ai chercher un peut sur le net et j'ai trouver une fonction équivalente pour le win32 et celle ci est lstrcpy malheuresement j'ai tjr le meme probleme. Est ce que vous auriez une solution mis a par recréé la fonction moi meme ? ++ Thomas
|
|
mardi 4 mai 2004 à 18:03:36 |
Re : Pb avec strcpy et win32

petitchech
|
salut sa doi etre peu etre que la taille de la chaine de text est plus grande que la capacité de la variable.
|
|
mardi 4 mai 2004 à 18:13:42 |
Re : Pb avec strcpy et win32

hilairenicolas
|
oui , ou bien que char * text n'est pas alloué montre ton code
|
|
mardi 4 mai 2004 à 18:19:12 |
Re : Pb avec strcpy et win32

ToToL
|
#include <windows.h> #include <stdlib.h>
LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;
#define NOM_APPLICATION "Premiere Application"
HINSTANCE hinst; char text1[38]="C'est chaux le Win32. Mais j'y arrive"; char text2[6]=": - )"; int a=30;
int WINAPI WinMain (HINSTANCE hInstance, //numero definissant notre programme HINSTANCE hPrevInstance, //plus utilisé (à NULL° PSTR szCmdLine, //ligne de commande avec l'appel du programme int iCmdShow) //état du programme au démarrage { //variable devant contenir un numero identifiant la fenetre que nous allons creer HWND hwnd ; //structure contenant les données d'un message MSG msg ; //classe de fenetre WNDCLASS wndclass ; //Instance du programme hinst = hInstance; wndclass.style = CS_HREDRAW | CS_VREDRAW ; //demande à Windows de rafraichir la fenetre si sa largeur ou sa hauteur changent wndclass.lpfnWndProc = WndProc ; //donne l'adresse de la procédure de fenêtre wndclass.cbClsExtra = 0 ; //permet de reserver de l'espace mémoire interne... wndclass.cbWndExtra = 0 ; //...a windows pour notre appli (non neccessaire) wndclass.hInstance = hinst ; //a quel programme est destiné cette fenêtre (le notre) wndclass.hIcon = LoadIcon (NULL, IDI_APPLICATION) ;//definit l'icône de notre programme (icône par defaut)... wndclass.hCursor = LoadCursor (NULL, IDC_ARROW) ; //...le curseur (par defaut) wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ;//...la couleur de fond (ici GRAY_BRUSH, mais il y'en a d'autres (WHITE_BRUSH, BLACK_BRUSH..) wndclass.lpszMenuName = NULL ; //permet de donner le nom d'une ressource menu (nous verrons cela plus tard) wndclass.lpszClassName = NOM_APPLICATION ; //nom que nous attribuons a la classe de fenêtre //créer la classe de fenêtre et la sauvegarder sous ce nom RegisterClass (&wndclass); //creer la fenêtre a partir de notre classe de fenêtre hwnd = CreateWindow (NOM_APPLICATION, // nom de la classe de fenêtre pour créer notre fenêtre "Mon premiere programme Win32 !", // titre de la fenêtre WS_OVERLAPPEDWINDOW, // style de la fenêtre (ici superposable) CW_USEDEFAULT, // position initiale coin superieur gauche en X CW_USEDEFAULT, // position initiale coin superieur gauche en y 320, // largeur de départ 240, // hauteur de départ NULL, // pas de fenêtre parente NULL, // pas de menu hinst, // a quel programme est relié notre fenêtre NULL) ; // données de création
//afficher la fenêtre ShowWindow (hwnd, iCmdShow); //mettre son contenu à jour UpdateWindow (hwnd) ; while (GetMessage (&msg,NULL,0,0)) { //traduire les données du message pour qu'elles soient lisible TranslateMessage (&msg) ; //envoyer le message à Windows qui le transmettra à WINDOWPROC DispatchMessage (&msg) ; } return msg.wParam ; } LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { //handle sur un device context HDC hdc ; //structure de dessin PAINTSTRUCT ps ; //structure contenant les coordonnées et la taille d'un rectangle RECT rect ; //créé la variable qui contiendra le pinceau HBRUSH pinceau;
switch (message) {
case WM_KEYUP: if ( wParam == VK_F1 ) { MessageBox(hwnd,"F1","a",MB_OK);} return 0; //s'il faut redessiner le contenu de la fenetre case WM_PAINT: //créé un pinceau de couleur rouge pinceau = CreateSolidBrush(RGB(255, 0,0)); //obtenir les données graphique de la fenêtre hdc = BeginPaint (hwnd, &ps) ; //obtenir la taille cliente de la fenêtre GetClientRect (hwnd, &rect); //Selectionne le pinceau SelectObject(hdc, pinceau); //Dessine un rectangle qui sera notre fond Rectangle(hdc, rect.left,rect.top,rect.right,rect.bottom); //faire en sorte que le fond du texte soit transparent (sinon le tour du texte //serait blanc sur nue fenêtre grise...) SetBkMode( hdc, TRANSPARENT); //ecrire le texte TextOut(hdc, a, 86, text1 , lstrlen(text1)); TextOut(hdc, 140, 110, text2 , lstrlen(text2)); //fin de la procédure de dessinage EndPaint (hwnd, &ps) ; return 0 ; //si on clique gauche case WM_LBUTTONDOWN: MessageBox(hwnd,"Vous venez de cliquer sur le bouton gauche de la sourie :-)","Sa Marche",MB_OK); return 0 ; //si on clique droit case WM_RBUTTONDOWN: strcpy(text1,"Vous venez de cliquer "); //MessageBox(hwnd,"Vous venez de cliquer sur le bouton droit de la sourie :-)","Sa Marche",MB_OK); return 0 ;
//si faut quitter case WM_DESTROY: //alors mettre un message "WM_QUIT" dans la file d'attente PostQuitMessage (0) ; return 0 ; } //tous les messages dont nous ne nons servons pas sont renvoyés au système return DefWindowProc (hwnd, message, wParam, lParam) ; }
|
Voila mon code enfait tu a raison sa devait etre que je le remplissait trop car maintenant sa marche sauf que je suis confronter a un nouveau probleme : le texte qui s'affiche ne change pas alors que je lui di de changer avec le strcpy. sa me fait pareille avec les variable int. j'arrive pas a trouver pourquoi ++
|
|
mardi 4 mai 2004 à 19:02:38 |
Re : Pb avec strcpy et win32

ymca2003
|
il faut demander de redessiner la fenêtre après strcpy : InvalidateRect(hWnd, NULL, TRUE); UpdateWindow(hWnd):
lors de la déclaration des chaînes, t'es pas obligé de mettre la taille si tu l'initialise derrière: char text1[]="C'est chaud le Win32. Mais j'y arrive"; char text2[]=": - )";
|
|
mardi 4 mai 2004 à 19:23:10 |
Re : Pb avec strcpy et win32

ToToL
|
Merci maintenant sa marche mais c'est quel fonction qui met a jour la variable ? InvalidateRect ou UpdateWindow car a la base mon probleme c'etait sa.
Pourai tu mindiquer un lien vers un tuto super simple qui explique en detail tout le debut de la prog win32 ?
merci et ++
|
|
mardi 4 mai 2004 à 19:29:09 |
Re : Pb avec strcpy et win32
|
mardi 4 mai 2004 à 20:13:56 |
Re : Pb avec strcpy et win32

ToToL
|
Merci mais ce tuto je c pas pourquoi mai j'arrive pas a le comprendre meme en le lisant des dizaine de fois.
En fait j'ai compri mon probleme : la varaible est changer , de ce coter la aucun probleme mais l'affichage n'est pas mis a jour donc le texte restai et avec InvalidateRect(hWnd, NULL, TRUE); sa me fait une actualisation de toute ma fenetre donc c bon. par contre UpdateWindow(hWnd): si je ne le met pas sa ne change rien donc il ne doit pas servir.
Encore merci les gars ........... Si vous avez un autre tuto je suis preneur
++
|
|
mardi 4 mai 2004 à 20:22:03 |
Re : Pb avec strcpy et win32

DARKSIDIOUS
|
InvalidateRect permet d'envoyer un message WM_PAINT pour redessiner toute la fenêtre selon les paramètres passés. UpdateWindow n'est donc pas obligatoire après. DarK Sidious [Responsable API/VB du site www.ProgOtoP.com] Téléchargez ProgOtoP API Viewer
|
|
mercredi 5 mai 2004 à 11:44:22 |
Re : Pb avec strcpy et win32

ymca2003
|
ça permet simplement d'outre passer la chaîne des mesage et d'apeler directement la WndProc avec WM_PAINT sans attendre qu'il passe par la file d'attente.
sinon, il te suffit de passer à la place de NULL le rectangle de la zone à mettre à jour (celle qui doit afficher le texte modifié).
|
|
Cette discussion est classée dans : fonction, pb, mis, win32, strcpy
Répondre à ce message
Sujets en rapport avec ce message
Urgent : FtpPutFile pb [ par Xentor609 ]
salut !J'ai un probleme lors de l'utilisation de la fonction FtpPutFile:voici un mroceau de la source:strcpy ( FileToSend, "c:\\temp\\send.txt");strcp
Pb de class [ par SfyLer ]
Imaginons :class teste{public:void fonction();void fonction2();};int teste::fonction() {int a = 1;return 0;}int teste::fonction2() {//ici j'aimerais r
fonction system avec windows [ par darkalpha ]
jutilise un programme afin de détecter quand un overflow se produit (le nombre de caractères) et le pb c que le programme entré avec system n'existe p
PB d'E/S fichier avec une DLL [ par huberdine ]
Je cherche a faire une DLL en C, dans la quelle je puisse faire des E/S fichier.Mon probleme est le suivant : la fonction fopen refuse de fonctionner
pb label [ par mat74 ]
salut a ts j'ai encore 1 pb , cette fois ci , avec un label .j'ai placer un label ds une fonction qui se trouve ds un fichier.h ( debut:; ) je fais
Pb CreateThreadddd !!!!!!!!!!! [ par neub ]
Salut à tous, j'ecris un module de visionnement d'image etje souhaiterai pouvoir stopper ma fonction OnPlay au moment voulu mais j'ai un pb a la creat
Pb de paramétre d'une fonction [ par Thanatos ]
Salut,J'aimerais faire une fonction qui a pour paramétre d'entrée un entier, une chaine de caractéres ou un tableau ( n'importe qoui en vérité).Commen
pb avec variable [ par jeffise57 ]
Please aidez moiJe reçoit comme arugument du fonction des variables unsigned char* et je doit passer dans une deuxième fonction les même arguments mai
Lien DLL 16 / API WIN32 [ par CoreBreaker ]
Bonjour quelqu'un sait-il comment une fonction de l'API Win32 dans une DLL 16bits ?Et de manière générale comment appeler une fonction d'une DLL 32bit
Pb avec la fonction free en C [ par Cako19 ]
Bonjour,J'ai un problème lorsque je souhaite libérer une chaîne de caractère et je ne trouve pas la réponse dans le forum bien que le sujet ait déjà é
Livres en rapport
|
Derniers Blogs
[RIA SERVICES] INCLUDE ET DOMAINDATASOURCE[RIA SERVICES] INCLUDE ET DOMAINDATASOURCE par Audrey
Dans un de mes articles précédents , j'avais parlé des DomainDataSource avec RIA Services dans le cas d'une interface Maître - Détail. Dans le même principe, je vais parler d'une autre manière de mettre en forme ce cas d'interface avec RIA Services. Et po...
Cliquez pour lire la suite de l'article par Audrey ZUNE : VERSION ZUNE SOFTWARE V 4.2 ET LA SOCIALISATIONZUNE : VERSION ZUNE SOFTWARE V 4.2 ET LA SOCIALISATION par ROMELARD Fabrice
Une des nouveautés de la version V 3.0 était l'apparition de l'onglet Social qui ne fonctionnait que si le MarketPlace était activé sur son poste. Cela limitait donc son intérêt, car hors du cadre commercial USA-CANADA, peu de monde trouva...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice PRATIQUE DE SILVERLIGHT PAR ERIC AMBROSIPRATIQUE DE SILVERLIGHT PAR ERIC AMBROSI par MPOWARE
Je viens de finir la lecture du dernier livre d'
Eric Ambrosi
éditions PEARSON
Son livre donne une approche pratique de Silverlight qui sera aussi bien comprise par le développeur que par le designeur.
Tous les aspects du développement RIA sont abor...
Cliquez pour lire la suite de l'article par MPOWARE APPRENDRE à DéVELOPPER POUR LES MOBILES AVEC LA NOUVELLE GéNéRATION .NETAPPRENDRE à DéVELOPPER POUR LES MOBILES AVEC LA NOUVELLE GéNéRATION .NET par odewit
2 déclinaisons de Silverlight et 2 déclinaisons de Mono permettent dorénavant (ou permettront prochainement) de développer des applications .NET mobiles pour les principales plates-formes du marché :
Silverlight pour Symbian, basé sur Silverlight 2...
Cliquez pour lire la suite de l'article par odewit ZUNE : NOUVELLE VERSION DU ZUNE SOFTWARE - V 4.2ZUNE : NOUVELLE VERSION DU ZUNE SOFTWARE - V 4.2 par ROMELARD Fabrice
Avec la dernière génération du lecteur MP3 de Microsoft, le ZUNE HD, Microsoft a publié une nouvelle version du logiciel pour PC. Ainsi, je me suis décidé à installer celle-ci sur mon Tablet PC ACER, comme toujours le logiciel est donc tél...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
Academy System (10.9.4.0)ACADEMY SYSTEM (10.9.4.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Xilisoft Convertisseur Vidéo Ultimate (5.1.39.0305)XILISOFT CONVERTISSEUR VIDéO ULTIMATE (5.1.39.0305)Xilisoft Convertisseur Vidéo Ultimate est un outil puissant de conversion vidéo, facile à utilise... Cliquez pour télécharger Xilisoft Convertisseur Vidéo Ultimate Xilisoft DVD Ripper Ultimate (5.0.64.0304)XILISOFT DVD RIPPER ULTIMATE (5.0.64.0304)Xilisoft DVD Ripper Ultimate est un logiciel excellent pour copier et convertir DVD vers presque ... Cliquez pour télécharger Xilisoft DVD Ripper Ultimate Rigs of Rods (63.3)RIGS OF RODS (63.3)c'est un jeu de multi-simulation camions,autobus voitures, avions, bateaux, hélicoptère avec défo... Cliquez pour télécharger Rigs of Rods
|