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
SESSION SILVERLIGHT 5 3D : SLIDES ET DEMOSSESSION SILVERLIGHT 5 3D : SLIDES ET DEMOS par Groc
Durant les techdays, j'ai eu le plaisir d'animer une session sur Silverlight 5 et la 3D avec Simon Ferquel. Comme promis, voici nos slides et mes démos (celles avec le viper BSG) ici et là. Pour mémoire, les démos utilisent toutes le viper BSG...
Cliquez pour lire la suite de l'article par Groc [TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES[TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES par gpommier
Suite à la session que j'ai présenté sur WebMatrix 2, vous pouvez trouver les slides ici, ainsi que les démos en packages nuget : démos1 et démos2 J'en profite pour remercier chaleureusement tous ceux qui sont venus très nombreux à cette sess...
Cliquez pour lire la suite de l'article par gpommier [SHAREPOINT] LES SESSIONS TECHDAYS 2012.[SHAREPOINT] LES SESSIONS TECHDAYS 2012. par Patrick Guimonet
Voici donc pour ceux qui n'ont pas pu venir, ou ceux qui n'ont pas pu toutes les suivre la liste des sessions SharePoint aux TechDays 2012, que je mettrais à jour dès que les liens des vidéo seront disponibles. Ou ici : http...
Cliquez pour lire la suite de l'article par Patrick Guimonet TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE !MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE ! par Vko
Hier durant une session dédiée aux Techdays 2012, j'ai eu le plaisir d'annoncer la sortie de la Béta 2 de Mishra Reader. C'est quoi ? Pour les utilisateurs, c'est une vraie expérience de lecture de flux RSS sur Windows. Rien à voir avec les produit...
Cliquez pour lire la suite de l'article par Vko
Forum
ALGORITHMESALGORITHMES par whayoub
Cliquez pour lire la suite par whayoub
Logiciels
Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning COLLECTOR PLUS (3.00B)COLLECTOR PLUS (3.00B)COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par :
- L... Cliquez pour télécharger COLLECTOR PLUS PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO LettresFaciles 2011 (8.0.0.1)LETTRESFACILES 2011 (8.0.0.1)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011
|