|
Trouver une ressource
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
Sujet : Pb avec strcpy et win32 [ Archives / Divers ] (ToToL)
Informations & options pour cette discussion
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é 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
|
Téléchargements
Logiciels à télécharger sur le même thème :
Comparez les prix Nouvelle version
|