De retour ,j'attends avec patience votre prochaine poste pour Faire
nos propres butons et les donner une commande "rôle" dans notre projet
merci
Alors pour la suite, je vais supposer que quand tu as renommé ton bouton, tu n'as pas changé son ID et qu'il est resté à IDC_BUTTON1.
Pour traiter l'événement, il s'agit de changer la façon dont on traite le message WM_COMMAND. Mais pour commencer, on va isoler son traitement dans une fonction séparée sans rien changer d'autre, pour éviter d'avoir une DialogProc trop compliquée.
Si tu regardes sa documentation, tu verras que ses deux paramètres contiennent trois valeurs:
- L'ID du bouton dans le mot inférieur de wParam
- Un code de notification dans le mot supérieur de wParam
- Le HWND du bouton dans lParam
On va alors se définir une fonction (qu'on modifiera un peu plus tard pour y ajouter le traitement de ton nouveau bouton), qu'on place au-dessus de la DialogProc dans le code:
Et dans la dialogproc, on remplace l'appel à EndDialog par:
Code C : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 BOOL HandleWmCommand(HWND hWnd, WORD controlId, WORD notifyCode, HWND hControl) { EndDialog(hWnd, 42); return TRUE; }
LOWORD et HIWORD sont des macros pour extraire le mot bas et le mot haut, respectivement. Pour le HWND du bouton, on caste le LPARAM en HWND; en Win32, on fait beaucoup de casts de ce genre, on n'a pas trop le choix. Heureusement, les types WPARAM et LPARAM sont étudiés pour pouvoir contenir aussi bien des entiers que des pointeurs, et vu du compilo, les HWND sont des pointeurs (même s'ils ne pointent pas vraiment sur quelque chose).
Code C : Sélectionner tout - Visualiser dans une fenêtre à part ret = HandleWmCommand(hWnd, LOWORD(wParam), HIWORD(wParam), (HWND)lParam);
Normalement, si tu compiles et exécutes, le code doit se comporter exactement comme avant. Patience, la suite arrive.
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
Pour ouvrir une page internet dans le navigateur par défaut, nous allons avoir besoin de la fonction ShellExecute(), donc on va commencer par inclure le fichier d'en-tête qui la déclare.
- Dans le projet, ouvre StdAfx.h
- Sous la ligne #include <windows.h>, ajoute cette ligne-ci:
Code C : Sélectionner tout - Visualiser dans une fenêtre à part #include <shellapi.h>
Ensuite, on va modifier la fonction HandleWmCommand():
N'hésite pas à poser des questions pour tout ce que tu as du mal à comprendre.
Code C : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 BOOL HandleWmCommand(HWND hWnd, WORD controlId, WORD notifyCode, HWND hControl) { BOOL ret = TRUE; switch(controlId) { case IDOK: EndDialog(hWnd, 42); break; case IDCANCEL: EndDialog(hWnd, 0); break; case IDC_BUTTON1: ShellExecute(hWnd, TEXT("open"), TEXT("http://www.developpez.net/forums/"), NULL, NULL, SW_SHOWNORMAL); break; default: ret = FALSE; } return ret; }
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
ok marche a 100 % le nouveau bouton aussi qu'on a créer ferme elle aussi le
projet comme ok et cancel ,merci
A la suite je vous attends cher frère
Juste comme rappel, je re-poste la dernière version de ProjTuto.cpp:
Code C∩C++ : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56 // ProjTuto.cpp : Defines the entry point for the application. // #include "stdafx.h" #include "resource.h" BOOL HandleWmCommand(HWND hWnd, WORD controlId, WORD notifyCode, HWND hControl) { BOOL ret = TRUE; switch(controlId) { case IDOK: EndDialog(hWnd, 42); break; case IDCANCEL: EndDialog(hWnd, 0); break; case IDC_BUTTON1: ShellExecute(hWnd, TEXT("open"), TEXT("http://www.developpez.net/forums/"), NULL, NULL, SW_SHOWNORMAL); break; default: ret = FALSE; } return ret; } //Note: devrait être INT_PTR, mais Visual 6 le déclare comme long. BOOL CALLBACK TutoDialogProc( HWND hWnd, //[in] Handle de fenêtre de la boîte de dialogue UINT uMessage, //[in] N° de message. WPARAM wParam, //[in] Valeur dépendante du message LPARAM lParam //[in] Valeur dépendante du message ) //Retourne TRUE si la fonction a traité elle-même le message. { INT_PTR ret = TRUE; switch(uMessage) { case WM_COMMAND: //Clic sur un bouton ret = HandleWmCommand(hWnd, LOWORD(wParam), HIWORD(wParam), (HWND)lParam); break; default: //Indique qu'on n'a pas traité le message, //il faut donc que le système le fasse pour nous. ret = FALSE; } return ret; } int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { int ret = DialogBoxParam(hInstance, MAKEINTRESOURCE(IDD_DIALOG1), NULL, TutoDialogProc, 0); return ret; }
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
c'est ok l'exemple de #include <shellapi.h> j'ai tester avec l'ouverture
de la page de forum et aussi après avec media player en changent
le lien par "C:/Program Files/Windows Media Player/wmplayer.exe"
,c'est ok
on passe si vous voulez bien au combobox ou comme vous voulez
parec que je veut par la suite scanner les ports active sur mon pc
........
merci , j'attends le prochain leçon
j'attends la suite mon frère comment faire une combobox
comment add des itmes ,comment en sélectionner un
itmes et clicker sur un bouton on la donne une
commande ....
Merci
Bonjour,
Une ComboBox, ce n'est pas le contrôle le plus simple à employer.
Avant ça, on va apprendre à mémoriser correctement des données pour une boîte de dialogue. Nous mémoriserons un pointeur vers une structure contenant juste un entier:
Pour mémoriser un pointeur, il faut utiliser la fonction SetWindowLongPtr(). Toutefois, cette fonction n'existe pas sous Visual 6, ni même sous forme de macro, il faut donc rajouter ceci dans stdafx.h:
Code C : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 struct memoire_dialog { int toto; };
Code C : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 #if !defined(SetWindowLongPtr) && !defined(_WIN64) #define SetWindowLongPtr SetWindowLong #define GetWindowLongPtr GetWindowLong #define GWLP_USERDATA GWL_USERDATA #define DWLP_USER DWL_USER typedef LONG LONG_PTR; #endif
Et dans la DialogProc, ça peut s'utiliser ainsi:
Pour l'instant, on ne va rien mettre d'intéressant dedans, mais c'est bien de l'avoir à portée de main.
Code C : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 //Note: devrait être INT_PTR, mais Visual 6 le déclare comme long. BOOL CALLBACK TutoDialogProc( HWND hWnd, //[in] Handle de fenêtre de la boîte de dialogue UINT uMessage, //[in] N° de message. WPARAM wParam, //[in] Valeur dépendante du message LPARAM lParam //[in] Valeur dépendante du message ) //Retourne TRUE si la fonction a traité elle-même le message. { INT_PTR ret = TRUE; struct memoire_dialog *pMem = (struct memoire_dialog *)GetWindowLongPtr(hWnd, DWLP_USER); switch(uMessage) { //Construction et destruction case WM_INITDIALOG: pMem = (struct memoire_dialog *)malloc(sizeof *pMem); SetWindowLongPtr(hWnd, DWLP_USER, (LONG_PTR)pMem); break; case WM_NCDESTROY: free(pMem); pMem = NULL; SetWindowLongPtr(hWnd, DWLP_USER, (LONG_PTR)pMem); break; case WM_COMMAND: //Clic sur un bouton ret = HandleWmCommand(hWnd, LOWORD(wParam), HIWORD(wParam), (HWND)lParam); break; default: //Indique qu'on n'a pas traité le message, //il faut donc que le système le fasse pour nous. ret = FALSE; } return ret; }
Patience, la leçon sur la ComboBox arrive dès quand j'aurais fini de la prendre en main (j'utilise très peu les ComboBox).
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
Pour la combobox, j'ai la flemme de faire un cours détaillé.
Agrandis un peu ta boîte de dialogue et ajoutes-y une combobox nommée IDC_COMBO1 (pour éviter les problèmes, donne-lui le type "Drop List" pour la rendre non-éditable).
Je joins un code qui l'utilise (j'ai modifié la DialogProc et le traitement de WM_COMMAND), pose des questions sur ce que tu as du mal à comprendre.
Désolé de ne pas pouvoir faire mieux, je suis un peu fatigué aujourd'hui.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92 // ProjTuto.cpp : Defines the entry point for the application. // #include "stdafx.h" #include "resource.h" struct memoire_dialog { int toto; }; //Attention, si cette taille n'est pas assez grande, le comportement est indéfini //Pour bien faire, il faudrait allouer dynamiquement le buffer. //Peut-être pour une prochaîne leçon... #define COMBOBOX_BUFFER_SIZE 80 BOOL HandleWmCommand(HWND hWnd, WORD controlId, WORD notifyCode, HWND hControl) { BOOL ret = TRUE; switch(controlId) { case IDOK: EndDialog(hWnd, 42); break; case IDCANCEL: EndDialog(hWnd, 0); break; case IDC_BUTTON1: { LRESULT index = SendDlgItemMessage(hWnd, IDC_COMBO1, CB_GETCURSEL, 0, 0); if(index==CB_ERR) MessageBox(hWnd, TEXT("Rien n'est sélectionné!"), NULL, MB_OK); else { TCHAR buf[COMBOBOX_BUFFER_SIZE] = TEXT(""); SendDlgItemMessage(hWnd, IDC_COMBO1, CB_GETLBTEXT, index, (LPARAM)buf); ShellExecute(hWnd, TEXT("open"), buf, NULL, NULL, SW_SHOWNORMAL); } } break; default: ret = FALSE; } return ret; } //Note: devrait être INT_PTR, mais Visual 6 le déclare comme long. BOOL CALLBACK TutoDialogProc( HWND hWnd, //[in] Handle de fenêtre de la boîte de dialogue UINT uMessage, //[in] N° de message. WPARAM wParam, //[in] Valeur dépendante du message LPARAM lParam //[in] Valeur dépendante du message ) //Retourne TRUE si la fonction a traité elle-même le message. { INT_PTR ret = TRUE; struct memoire_dialog *pMem = (struct memoire_dialog *)GetWindowLongPtr(hWnd, DWLP_USER); switch(uMessage) { //Construction et destruction case WM_INITDIALOG: pMem = (struct memoire_dialog *)malloc(sizeof *pMem); SetWindowLongPtr(hWnd, DWLP_USER, (LONG_PTR)pMem); SendDlgItemMessage(hWnd, IDC_COMBO1, CB_ADDSTRING, 0, (LPARAM)TEXT("http://www.developpez.net/forums/")); SendDlgItemMessage(hWnd, IDC_COMBO1, CB_ADDSTRING, 0, (LPARAM)TEXT("http://www.developpez.com/")); SendDlgItemMessage(hWnd, IDC_COMBO1, CB_SETCURSEL, 1, 0); break; case WM_NCDESTROY: free(pMem); pMem = NULL; SetWindowLongPtr(hWnd, DWLP_USER, (LONG_PTR)pMem); break; case WM_COMMAND: //Clic sur un bouton ret = HandleWmCommand(hWnd, LOWORD(wParam), HIWORD(wParam), (HWND)lParam); break; default: //Indique qu'on n'a pas traité le message, //il faut donc que le système le fasse pour nous. ret = FALSE; } return ret; } int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { int ret = DialogBoxParam(hInstance, MAKEINTRESOURCE(IDD_DIALOG1), NULL, TutoDialogProc, 0); return ret; }
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
Merci mon frère je vais essayer de comprendre ce leçon d'abord et l'appliquer
a la prochaine leçon
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94 // ProjTuto.cpp : Defines the entry point for the application. // #include "stdafx.h" #include "resource.h" struct memoire_dialog { int toto; }; #define COMBOBOX_BUFFER_SIZE 80 BOOL HandleWmCommand(HWND hWnd, WORD controlId, WORD notifyCode, HWND hControl) { BOOL ret = TRUE; switch(controlId) { case IDOK: EndDialog(hWnd, 42); break; case IDCANCEL: EndDialog(hWnd, 0); break; case IDC_BUTTON1: { LRESULT index = SendDlgItemMessage(hWnd, IDC_COMBO1, CB_GETCURSEL, 0, 0); if(index==CB_ERR) MessageBox(hWnd, TEXT("Rien n'est sélectionné!"), NULL, MB_OK); else { TCHAR buf[COMBOBOX_BUFFER_SIZE] = TEXT(""); SendDlgItemMessage(hWnd, IDC_COMBO1, CB_GETLBTEXT, index, (LPARAM)buf); ShellExecute(hWnd, TEXT("open"), buf, NULL, NULL, SW_SHOWNORMAL); } } break; default: ret = FALSE; } return ret; } default: ret = FALSE; } return ret; } //Note: devrait être INT_PTR, mais Visual 6 le déclare comme long. BOOL CALLBACK TutoDialogProc( HWND hWnd, //[in] Handle de fenêtre de la boîte de dialogue UINT uMessage, //[in] N° de message. WPARAM wParam, //[in] Valeur dépendante du message LPARAM lParam //[in] Valeur dépendante du message ) //Retourne TRUE si la fonction a traité elle-même le message. { INT_PTR ret = TRUE; struct memoire_dialog *pMem = (struct memoire_dialog *)GetWindowLongPtr(hWnd, DWLP_USER); switch(uMessage) { //Construction et destruction case WM_INITDIALOG: pMem = (struct memoire_dialog *)malloc(sizeof *pMem); SetWindowLongPtr(hWnd, DWLP_USER, (LONG_PTR)pMem); SendDlgItemMessage(hWnd, IDC_COMBO1, CB_ADDSTRING, 0, (LPARAM)TEXT("http://www.developpez.net/forums/")); SendDlgItemMessage(hWnd, IDC_COMBO1, CB_ADDSTRING, 0, (LPARAM)TEXT("http://www.developpez.com/")); SendDlgItemMessage(hWnd, IDC_COMBO1, CB_SETCURSEL, 1, 0); break; case WM_NCDESTROY: free(pMem); pMem = NULL; SetWindowLongPtr(hWnd, DWLP_USER, (LONG_PTR)pMem); break; case WM_COMMAND: //Clic sur un bouton ret = HandleWmCommand(hWnd, LOWORD(wParam), HIWORD(wParam), (HWND)lParam); break; default: //Indique qu'on n'a pas traité le message, //il faut donc que le système le fasse pour nous. ret = FALSE; } return ret; } int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { int ret = DialogBoxParam(hInstance, MAKEINTRESOURCE(IDD_DIALOG1), NULL, TutoDialogProc, 0); return ret; }
ca n'a pas marcher pour moi cette fois
voici mon code pour que vous pouvez savoir les erreurs que j'ai comis
et aussi ici le message d'erreur par visuel c++
Merci j'attends votre correction--------------------Configuration: ProjTuto - Win32 Debug--------------------
Compiling...
ProjTuto.cpp
C:\Program Files\Microsoft Visual Studio\MyProjects\ProjTuto\ProjTuto.cpp(33) : error C2065: 'ShellExecute' : undeclared identifier
C:\Program Files\Microsoft Visual Studio\MyProjects\ProjTuto\ProjTuto.cpp(43) : error C2143: syntax error : missing ';' before 'default'
C:\Program Files\Microsoft Visual Studio\MyProjects\ProjTuto\ProjTuto.cpp(44) : error C2501: 'ret' : missing storage-class or type specifiers
C:\Program Files\Microsoft Visual Studio\MyProjects\ProjTuto\ProjTuto.cpp(45) : error C2143: syntax error : missing ';' before '}'
C:\Program Files\Microsoft Visual Studio\MyProjects\ProjTuto\ProjTuto.cpp(45) : error C2143: syntax error : missing ';' before '}'
C:\Program Files\Microsoft Visual Studio\MyProjects\ProjTuto\ProjTuto.cpp(45) : error C2143: syntax error : missing ';' before '}'
C:\Program Files\Microsoft Visual Studio\MyProjects\ProjTuto\ProjTuto.cpp(47) : error C2143: syntax error : missing ';' before '}'
C:\Program Files\Microsoft Visual Studio\MyProjects\ProjTuto\ProjTuto.cpp(47) : error C2143: syntax error : missing ';' before '}'
C:\Program Files\Microsoft Visual Studio\MyProjects\ProjTuto\ProjTuto.cpp(47) : error C2143: syntax error : missing ';' before '}'
C:\Program Files\Microsoft Visual Studio\MyProjects\ProjTuto\ProjTuto.cpp(56) : error C2143: syntax error : missing ';' before '{'
C:\Program Files\Microsoft Visual Studio\MyProjects\ProjTuto\ProjTuto.cpp(56) : error C2447: missing function header (old-style formal list?)
C:\Program Files\Microsoft Visual Studio\MyProjects\ProjTuto\ProjTuto.cpp(92) : error C2065: 'TutoDialogProc' : undeclared identifier
Error executing cl.exe.
ProjTuto.exe - 12 error(s), 0 warning(s)
C'est bizarre. Puis-je voir ton stdafx.h ?
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
Edit: Tu as un passage écrit en double!
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
non j'ai pas fait double
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 // stdafx.h : include file for standard system include files, // or project specific include files that are used frequently, but // are changed infrequently // #if !defined(AFX_STDAFX_H__A9DB83DB_A9FD_11D0_BFD1_444553540000__INCLUDED_) #define AFX_STDAFX_H__A9DB83DB_A9FD_11D0_BFD1_444553540000__INCLUDED_ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 #define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers #include <windows.h> // TODO: reference additional headers your program requires here //{{AFX_INSERT_LOCATION}} // Microsoft Visual C++ will insert additional declarations immediately before the previous line. #endif // !defined(AFX_STDAFX_H__A9DB83DB_A9FD_11D0_BFD1_444553540000__INCLUDED_)
Que sont devenues les modifs que je t'aies conseillées d'apporter?
Voici ma version de stdafx.h:
Code C : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 // stdafx.h : include file for standard system include files, // or project specific include files that are used frequently, but // are changed infrequently // #if !defined(AFX_STDAFX_H__A9DB83DB_A9FD_11D0_BFD1_444553540000__INCLUDED_) #define AFX_STDAFX_H__A9DB83DB_A9FD_11D0_BFD1_444553540000__INCLUDED_ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 #define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers #include <windows.h> #include <shellapi.h> #include <stdlib.h> // TODO: reference additional headers your program requires here #if !defined(SetWindowLongPtr) && !defined(_WIN64) #define SetWindowLongPtr SetWindowLong #define GetWindowLongPtr GetWindowLong #define GWLP_USERDATA GWL_USERDATA #define DWLP_USER DWL_USER typedef LONG LONG_PTR; #endif //{{AFX_INSERT_LOCATION}} // Microsoft Visual C++ will insert additional declarations immediately before the previous line. #endif // !defined(AFX_STDAFX_H__A9DB83DB_A9FD_11D0_BFD1_444553540000__INCLUDED_)
Je peux pourtant t'assurer que ce n'est pas moi qui ai écrit ceci:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 default: ret = FALSE; } return ret; } default: ret = FALSE; } return ret; }
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
bon je vais revenir de 0 je récrit le projet a nouveau c'est pour mieu
comprendre et d'essayer de corriger mes fautes
Merci a +
c'est ok mon frère j'ai refait le projet et ca marche pour moi et je vais le refaire
encore plusieurs fois pour le maîtriser bien
si on passe a la cobobox et mscomm lier entre eux pour détecter les port
rs232 connecter au pc en utilisons Ftdi
je vai refaire la lecon precedente en attendant votre repense et votre prochain
leçon
Merci
Je préviens, je ne connais pas mscomm.
Et sur le coup, je ne vois pas trop sur quoi faire porter la prochaine leçon...
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
C'est H.S. mais Médinoc, franchement tu m'épates.
Peu de personnes auraient eu l'amabilité d'aider un débutant de la manière dont tu le fais, et je trouve que c'est notable et tout à ton honneur.
Ca fait vraiment plaisir de voir des gens aider comme ça sans attendre quoi que ce soit en retour.
J'en connais plus d'un (moi y compris) qui auraient déjà livré la personne à elle même en l'envoyant faire des recherches longues et houleuses.
Même si Sayler devra bientôt le faire (se débrouiller seul), il aura au moins les clés et saura mieux où et comment chercher.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager