Accueil
Rechercher:
sur developpez.com sur les forums
Forums | Tutoriels | F.A.Q's | Participez | Hébergement | Contacts
Club Emploi Blogs   TV   Dév. Web PHP XML Python Autres 2D-3D-Jeux Sécurité Windows Linux PC Mac
Accueil Conception Java DotNET Visual Basic  C  C++ Delphi MS-Office SQL & SGBD Oracle  4D  Business Intelligence
FORUMS C FAQs C TUTORIELS C LIVRES C COMPILATEURS C SOURCES GTK+

Tutorial d'initiation
A la programmation avec l'API Windows

Tutorial d'initiation a la programmation Windows avec Microsoft Visual C++
PrécédentIndexSuivant

Chapitre 1

Les bases d'un programme Windows

5. Pas à pas pour C++ Builder

Nous allons reprendre la 4ème partie : "Lecture dans un fichier et boîte de dialogue." mais adaptée à C++ Builder. Deux procédures sont traitées dans ce document une pour BCB6 et une pour BCB4.

Pour les projets sans boîte de dialogue la procédure est la même sauf qu'il n'y a pas besoin de rajouter de fichiers ressources.

BCB 6

Faire "Nouveau". (appelle la boîte de dialogue Nouveaux éléments)

Sur la boîte de dialogue "Expert console" :

Sur "Type de source" sélectionner "C" ou "C++". (Pour l'exemple cela n'a pas d'importance)

Aucune des CheckBox à droite ne doit être cochée.

Clicker sur le bouton "Ok".

Maintenant nous avons le code minimum pour ce type d'application:

#include <windows.h>
#pragma hdrstop


//---------------------------------------------------------------------------
#pragma argsused
WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine,int 
 nCmdShow)
{
        return 0;}

Enregister le projet sous le nom choisi. Ici "main.cpp" et "main.bpr". (Faire "Fichier" puis "Tout enregistrer")

J'ai utilisé "Resource WorkShop" (livré avec BCB) pour faire le fichier Dialog1.rc mais il peut se faire avec n'importe quel éditeur de ressource.

Puis il faut ajouter le fichier ressource au projet:

Sur le menu faire "Projet" puis "Ajouter au projet"

Selectionner le type de fichier voulu ici "Fichier ressource (*.rc)"

Puis sélectionner le fichier ici "Dialog1.rc"

Puis faire Ouvrir

Le code source est identique a l'exemple Visual C++ (J'ai mis les mêmes noms d'identificateur)

Les source des fichiers "Dialog1.rc" et "ressource.h" sont a la fin de ce document.

Fichier "main.cpp":

#include <windows.h>
#pragma hdrstop //Pas obligatoire
#include "ressource.h"


//---------------------------------------------------------------------------




LRESULT CALLBACK MainProc(HWND Dlg,UINT message,WPARAM wParam,LPARAM lParam);


#pragma argsused //ajouté automatiquement mais pas nécéssaire.


WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, in 
t nCmdShow)


{
     DialogBox(hInstance,(LPCTSTR)DIALOG_1,NULL,(DLGPROC)MainProc);
     return 0;
}
//---------------------------------------------------------------------------


LRESULT CALLBACK MainProc(HWND Dlg,UINT message,WPARAM wParam,LPARAM lParam)
{
   int Select;
   char buf[501];
   HANDLE hFile;
   DWORD Read;
   switch(message)
   {
   case WM_COMMAND:
      Select=LOWORD(wParam);
      switch(Select)
      {
      case IDC_LIRE:
         GetDlgItemText(Dlg,IDC_FILENAME,buf,256);
         hFile=CreateFile(buf,GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,FI 
LE_ATTRIBUTE_NORMAL,NULL);
         if(hFile==INVALID_HANDLE_VALUE)
         {
            MessageBox(Dlg,"Erreur, impossible d'ouvrir le fichier spécifié.","E 
rreur",MB_OK);
            return 0;
         }
         ReadFile(hFile,buf,500,&Read,NULL);
         CloseHandle(hFile);
         buf[Read]='';
         SetDlgItemText(Dlg,IDC_TEXT,buf);
         return 0;



      case IDOK:
         EndDialog(Dlg,0);
         return TRUE;
      case IDCANCEL:
         EndDialog(Dlg,0);
         return TRUE;
      }
   default:
      return FALSE;
   }
}
BCB 4

Faire "Nouveau". (appelle la boîte de dialogue Nouveaux éléments)

Sur la boîte de dialogue "Nouveaux éléments" Onglet "Nouveau" DbClk sur l'icône "Expert console". (appelle la boîte de dialogue "Expert d'application console")

Sur la boîte de dialogue "Expert d'application console" :

Sur "Type de fenêtre" sélectionner "Windows (GUI)".

Sur "Type d'exécution" sélectionner "EXE".

Clicker sur le bouton "Terminer".

Maintenant nous avons le code minimum pour ce type d'application:

#include <windows.h>
#pragma hdrstop
#include <condefs.h>


//---------------------------------------------------------------------------
#pragma argsused
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
        return 0;
}

Enregister le projet sous le nom choisi. Ici "main.cpp". (Faire "Fichier" puis "Tout enregistrer")

J'ai utilisé "Resource WorkShop" (livré avec BCB) pour faire le fichier Dialog1.rc mais il peut se faire avec n'importe quel éditeur de ressource.

Puis il faut ajouter le fichier ressource au projet:

Sur le menu faire "Projet" puis "Ajouter au projet"

Selectionner le type de fichier voulu ici "Fichier ressource (*.rc)"

Puis sélectionner le fichier ici "Dialog1.rc"

Puis faire Ouvrir

Cela va ajouter cette ligne dans le code :

USERC("Dialog1.rc");

Le reste du code est identique a l'exemple Visual C++ (J'ai mis les mêmes noms d'identificateur)

Fichier "main.cpp":

#include <windows.h>
#pragma hdrstop
#include <condefs.h>
#include "ressource.h"


//---------------------------------------------------------------------------
USERC("Dialog1.rc");
//---------------------------------------------------------------------------


LRESULT CALLBACK MainProc(HWND Dlg,UINT message,WPARAM wParam,LPARAM );


#pragma argsused //ajouté automatiquement mais pas nécéssaire.
WINAPI WinMain(HINSTANCE hInstance, HINSTANCE, LPSTR, int)
{
   DialogBox(hInstance,(LPCTSTR)DIALOG_1,NULL,(DLGPROC)MainProc);
   return 0;
}


LRESULT CALLBACK MainProc(HWND Dlg,UINT message,WPARAM wParam,LPARAM )
{
   int Select;
   char buf[501];
   HANDLE hFile;
   DWORD Read;
   switch(message)
   {
   case WM_COMMAND:
      Select=LOWORD(wParam);
      switch(Select)
      {
      case IDC_LIRE:
         GetDlgItemText(Dlg,IDC_FILENAME,buf,256);
         hFile=CreateFile(buf,GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,FI 
LE_ATTRIBUTE_NORMAL,NULL);
         if(hFile==INVALID_HANDLE_VALUE)
         {
            MessageBox(Dlg,"Erreur, impossible d'ouvrir le fichier spécifié.","E 
rreur",MB_OK);
            return 0;
         }
         ReadFile(hFile,buf,500,&Read,NULL);
         CloseHandle(hFile);
         buf[Read]='';
         SetDlgItemText(Dlg,IDC_TEXT,buf);
         return 0;


      case IDOK:
         EndDialog(Dlg,0);
         return TRUE;
     case IDCANCEL:
         EndDialog(Dlg,0);
         return TRUE;
      }
   default:
      return FALSE;
   }
}

Autres fichiers

Identique pour BCB4 et BCB6

Fichier "Dialog1.rc"

#include "ressource.h"

DIALOG_1 DIALOG 14, 30, 212, 227
STYLE WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "DIALOG_1"
FONT 8, "MS Sans Serif"
{
 CONTROL "Ok", IDOK, "BUTTON", BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTO 
P, 56, 193, 36, 14
 CONTROL "Cancel", IDCANCEL, "BUTTON", BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | W 
S_TABSTOP, 115, 193, 38, 14
 CONTROL "", IDC_FILENAME, "EDIT", ES_LEFT | WS_CHILD | WS_VISIBLE | WS_BORDER | 
 WS_TABSTOP, 26, 18, 91, 12
 CONTROL "", IDC_TEXT, "EDIT", ES_LEFT | ES_MULTILINE | WS_CHILD | WS_VISIBLE |  
WS_BORDER | WS_TABSTOP, 18, 49, 175, 119
 CONTROL "Lire", IDC_LIRE, "BUTTON", BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_ 
TABSTOP, 136, 18, 50, 14
}

Fichier "Ressource.h"

#define DIALOG_1    1


#define IDC_FILENAME 101
#define IDC_TEXT 102
#define IDC_LIRE 103

PrécédentIndexSuivant

Responsable bénévole de la rubrique C : Arnaud Feltz (buchs) - Contacter par EMail :
Vos questions techniques : forum d'entraide C - Publiez vos articles, tutoriels et cours
et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones
Nous contacter - Copyright © 2000-2008 www.developpez.com - Legal informations.