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
    Futur Membre du Club
    Inscrit en
    Septembre 2009
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 35
    Points : 7
    Points
    7
    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
    Futur Membre du Club
    Inscrit en
    Septembre 2009
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 35
    Points : 7
    Points
    7
    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 sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    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 sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    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:
      Code C : Sélectionner tout - Visualiser dans une fenêtre à part
      #include <shellapi.h>


    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
    Futur Membre du Club
    Inscrit en
    Septembre 2009
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 35
    Points : 7
    Points
    7
    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 sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    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
    Futur Membre du Club
    Inscrit en
    Septembre 2009
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 35
    Points : 7
    Points
    7
    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
    Futur Membre du Club
    Inscrit en
    Septembre 2009
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 35
    Points : 7
    Points
    7
    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 sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    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 sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    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
    Futur Membre du Club
    Inscrit en
    Septembre 2009
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 35
    Points : 7
    Points
    7
    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
    Futur Membre du Club
    Inscrit en
    Septembre 2009
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 35
    Points : 7
    Points
    7
    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 sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    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 sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    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
    Futur Membre du Club
    Inscrit en
    Septembre 2009
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 35
    Points : 7
    Points
    7
    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 sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    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
    Futur Membre du Club
    Inscrit en
    Septembre 2009
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 35
    Points : 7
    Points
    7
    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
    Futur Membre du Club
    Inscrit en
    Septembre 2009
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 35
    Points : 7
    Points
    7
    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 sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    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 confirmé
    Inscrit en
    Août 2004
    Messages
    556
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 556
    Points : 588
    Points
    588
    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