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 95 96 97 98 99 100 101
| //************************************************************************************
//AJOUT DE NOUVEAUX PRODUITS
//*********************************************************************************
// Procédure de gestion de la boite de dialogue
LRESULT CALLBACK MainProc2(HWND Dlg,UINT message,WPARAM wParam,LPARAM lParam)
{
HWND hCtrl; // On aura besoin d'un handle pour ne pas faire d'appels successifs à GetDlgItem()
int Select,i;
char buf[256]; // Un buffer pour stocker le nom de l'entrée à ajouter
switch(message)
{
case WM_INITDIALOG:
// Initialisation de la boite de dialogue
// On récupère un HWND sur le controle auquel on va envoyer les messages
hCtrl=GetDlgItem(Dlg,IDC_COMBO);
// On récupère un HWND sur le controle auquel on va envoyer les messages
hCtrl=GetDlgItem(Dlg,IDC_LIST);
//Affichage de la liste des produits
FILE *fl;
fl = fopen (MY_PATH4, "r");
while (fin!=1)
{
/* lecture des lignes */
fgets (ligne, sizeof ligne, fl);
// On ajoute l'entrée
SendMessage(hCtrl,LB_ADDSTRING,NULL,(LPARAM)(LPCTSTR)ligne);
if (feof(fl)) fin=1;
if (ferror(fl)) fin=1;
}
/* Fermeture du fichier */
fclose (fl);
fin=0;
return TRUE;
/* Par défaut, un combo a une liste déroulante de taille nulle
il faut donc l'agrandir. Si on donne une taille suppérieur au nécessaire
le liste sera redimensionnée à la taille exacte */
SetWindowPos(hCtrl,NULL,NULL,NULL,100,300,SWP_NOZORDER|SWP_NOMOVE);
// On donne une sélection par défaut pour qu'un choix soit forcément fait
SendMessage(hCtrl,CB_SETCURSEL,0,NULL);
return 0;
case WM_COMMAND:
Select=LOWORD(wParam);
switch(Select)
{
case IDC_ADD:
// On récupère un HWND sur le controle auquel on va envoyer les messages
hCtrl=GetDlgItem(Dlg,IDC_COMBO);
// On récupère le nom à donner
GetDlgItemText(Dlg,IDC_EDIT,buf,32);
// On récupère un HWND sur le controle auquel on va envoyer les messages
hCtrl=GetDlgItem(Dlg,IDC_LIST);
// On ajoute l'entrée dans la liste
SendMessage(hCtrl,LB_ADDSTRING,NULL,(LPARAM)(LPCTSTR)buf);
//On ajoute l'entree dans le fichier
FILE *fl;
fl = fopen (MY_PATH4, "a");
fprintf(fl,"\n%s",buf);
fclose(fl);
return TRUE;
/* Quand appuie sur ok et cancel*/
case IDOK:
EndDialog(Dlg,0);
return TRUE;
case IDCANCEL:
EndDialog(Dlg,Select);
return TRUE;
}
default:
return FALSE;
}
} |
Partager