Tutorial d'initiation A la programmation avec l'API Windows
Tutorial d'initiation a la programmation Windows avec Microsoft Visual C++
Chapitre 1Les bases d'un programme Windows5. 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
|