IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

VC++ .NET Discussion :

Comment faire une application Windows avec Visual C++ 6.0


Sujet :

VC++ .NET

  1. #21
    Membre averti
    Inscrit en
    Septembre 2009
    Messages
    35
    D�tails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 35
    Par d�faut
    Citation Envoy� par M�dinoc Voir le message
    Quelle est l'erreur avec DialogBoxParam?

    Desoler c'est moi que j'ai fait une faute au lieu de le mettre en-dessous j'ai fait

    au en-dessus Sorry again

    c'est parfait de ta part

  2. #22
    Membre averti
    Inscrit en
    Septembre 2009
    Messages
    35
    D�tails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 35
    Par d�faut
    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

  3. #23
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    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:
    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;
    }
    Et dans la dialogproc, on remplace l'appel � EndDialog par:
    Code C : S�lectionner tout - Visualiser dans une fen�tre � part
    		ret = HandleWmCommand(hWnd, LOWORD(wParam), HIWORD(wParam), (HWND)lParam);
    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).

    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.

  4. #24
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    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.
    1. Dans le projet, ouvre StdAfx.h
    2. Sous la ligne #include <windows.h>, ajoute cette ligne-ci:


    Ensuite, on va modifier la fonction HandleWmCommand():
    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;
    }
    N'h�site pas � poser des questions pour tout ce que tu as du mal � comprendre.
    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.

  5. #25
    Membre averti
    Inscrit en
    Septembre 2009
    Messages
    35
    D�tails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 35
    Par d�faut
    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

  6. #26
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    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.

  7. #27
    Membre averti
    Inscrit en
    Septembre 2009
    Messages
    35
    D�tails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 35
    Par d�faut
    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

  8. #28
    Membre averti
    Inscrit en
    Septembre 2009
    Messages
    35
    D�tails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 35
    Par d�faut
    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

  9. #29
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    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:
    Code C : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    struct memoire_dialog
    {
    	int toto;
    };
    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
    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:
    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;
    }
    Pour l'instant, on ne va rien mettre d'int�ressant dedans, mais c'est bien de l'avoir � port�e de main.
    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.

  10. #30
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    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.

  11. #31
    Membre averti
    Inscrit en
    Septembre 2009
    Messages
    35
    D�tails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 35
    Par d�faut
    Merci mon fr�re je vais essayer de comprendre ce le�on d'abord et l'appliquer

    a la prochaine le�on

  12. #32
    Membre averti
    Inscrit en
    Septembre 2009
    Messages
    35
    D�tails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 35
    Par d�faut
    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++

    --------------------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)
    Merci j'attends votre correction

  13. #33
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    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.

  14. #34
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    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.

  15. #35
    Membre averti
    Inscrit en
    Septembre 2009
    Messages
    35
    D�tails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 35
    Par d�faut
    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_)
    non j'ai pas fait double

  16. #36
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    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_)

    Citation Envoy� par Sayler Voir le message
    non j'ai pas fait double
    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.

  17. #37
    Membre averti
    Inscrit en
    Septembre 2009
    Messages
    35
    D�tails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 35
    Par d�faut
    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 +

  18. #38
    Membre averti
    Inscrit en
    Septembre 2009
    Messages
    35
    D�tails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 35
    Par d�faut
    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

  19. #39
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    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.

  20. #40
    Membre chevronn�
    Inscrit en
    Ao�t 2004
    Messages
    556
    D�tails du profil
    Informations forums :
    Inscription : Ao�t 2004
    Messages : 556
    Par d�faut
    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.

Discussions similaires

  1. R�ponses: 6
    Dernier message: 21/11/2008, 21h20
  2. R�ponses: 4
    Dernier message: 15/12/2007, 15h10
  3. R�ponses: 1
    Dernier message: 16/07/2007, 12h49
  4. D�veloppement d'une application Windows (avec visual basic)
    Par visualbasic152 dans le forum VB.NET
    R�ponses: 14
    Dernier message: 24/01/2007, 17h23
  5. R�ponses: 1
    Dernier message: 03/05/2006, 10h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo