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.
Partager