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


API Windows en C

11 - Une boîte de dialogue comme fenêtre principale.

Par CGi

Le 5 juillet 2005




Introduction :

Un petit chapitre pour montrer qu'on peut utiliser une boîte de dialogue comme fenêtre principale. Cela peut être intéressant pour des applications dont la fenêtre principale comporte beaucoup de contrôles dans sa zone client. Nous allons pour cet exemple créer une boîte de dialogue comportant un contrôle texte, un contrôle d'édition et un bouton. Le contrôle d'édition ne pourra recevoir que des chiffres.


Mise en oeuvre :

La boîte de dialogue est construite à partir de ressources comme dans les autres chapitres. Mais dans ce cas nous l'appellerons directement dans la fonction WinMain :

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
                                                LPSTR lpCmdLine, int nCmdShow)
{
       DialogBox(hInstance,"DIALOG1",NULL,(DLGPROC)DlgProc);
       return 0;
}

Le traitement de la boîte de dialogue est identique à une boîte de dialogue ordinaire.

Code complet :

resource.h :


#define IDE_EDIT1 101

resource.rc :

#include <windows.h>

#include "resource.h"

DIALOG1 DIALOG
   60, 60, 160, 80
          STYLE WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
                                        CAPTION "Dialogue Principale"
BEGIN
    DEFPUSHBUTTON "Ok", IDOK, 56, 55, 42, 12
    LTEXT "Saisie d'un nombre :", -1, 45, 15, 80, 10
    EDITTEXT IDE_EDIT1, 45, 30, 60, 12, ES_NUMBER | ES_RIGHT
END

winmain.c :

#include <windows.h>

#include "resource.h"

BOOL APIENTRY DlgProc(HWND Dlg,UINT message,WPARAM wParam,LPARAM lParam);

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
                                                LPSTR lpCmdLine, int nCmdShow)
{
       DialogBox(hInstance,"DIALOG1",NULL,(DLGPROC)DlgProc);
       return 0;
}
//---------------------------------------------------------------------------

BOOL APIENTRY DlgProc(HWND hDlg,UINT uMsg,WPARAM wParam,LPARAM lParam)
{
    switch (uMsg)
    {
      case WM_INITDIALOG:

         return TRUE;

      case WM_COMMAND:
         if (LOWORD(wParam) == IDOK)
              {
               CHAR st[256];
               UINT valeur = GetDlgItemInt(hDlg, IDE_EDIT1, NULL, FALSE);
               wsprintf(st, "Vous avez choisi le nombre %d", valeur);
               MessageBox(hDlg, st, "Résultat", MB_OK);
              }
         if (LOWORD(wParam) == IDCANCEL)
                {
                   EndDialog(hDlg,0);
                   return TRUE;
                }
      default:
         return FALSE;
    }
}

J'ai testé les compilations avec C++ Builder et DevC++.


A vos PC.

CGi

Avec la contribution de pharaonix pour la relecture.



Sommaire



C/C++
  Les pointeurs du C/C++.   Les listes chaînées.             Liste simple.             Liste triée.             Liste double.   Les arbres.   Les tas.   Le C orienté objets ?

  1 - La fenêtre principale.   2 - Contrôles et messages.   3 - Les commandes.   4 - Dialogue std.   5 - Contexte de périph.   6 - Dessiner.   7 - Les ressources.   8 - Dialogue perso.   9 - Dialogue comm.   10 - Les accélérateurs.

Assembleur
  Assembleur sous Visual C++.

C++ BUILDER
  Trucs et astuces.   Composant.   TRichEdit.   TDrawGrid.   Application MDI.   TThread.   wxWidgets.   Style Win XP.

  Première application.   Construire un menu.   Dessiner.   Sisers, Timers...   Dialogues standards.   Dialogues perso.

DotNet
  Composant C# Builder.   Contrôle WinForm.   Application MDI.

Java
  Applet java.





Copyright 2002-2020 CGi - Tous droits réservés CGi. Toutes reproduction, utilisation ou diffusion de ce document par quelque moyen que ce soit autre que pour un usage personnel doit faire l'objet d'une autorisation écrite de la part de l'auteur, propriétaire des droits intellectuels.
Les codes sources de ce document sont fournis en l'état. L'utilisateur les utilise à ses risques et périls, sans garantie d'aucune sorte de la part de l'auteur. L'auteur n'est responsable d'aucun dommage subi par l'utilisateur pouvant résulter de l'utilisation ou de la distribution des codes sources de ce document.
De la même façon, l'auteur n'est en aucun cas responsable d'une quelconque perte de revenus ou de profits, ou de données, ou de tous dommages directs ou indirects, susceptibles de survenir du fait de l'utilisation des codes sources de ce document, quand bien même l'auteur aurait été averti de la possibilité de tels dommages. L'utilisation des codes sources de ce document vaut acceptation par l'utilisateur des termes de la licence ci-dessus.