Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
671 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  BCC5.5 - faire un bouton, une interface graphique.

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

BCC5.5 - faire un bouton, une interface graphique.

n°664373
AGA
La boîte à Bokeh!
Posté le 05-03-2004 à 14:47:30  profilanswer
 

Bonjour,
 
COmment faire avec BCC55+ un bouton?
 
voilà ma fenêtre :

Code :
  1. #include <windows.h>
  2. //déclarations de variables
  3. LPSTR lpszAppName="Un projet";
  4. HINSTANCE hInst;
  5. HWND hWnd;
  6. //Prototypes de fonctions
  7. LONG WINAPI WndProc( HWND hWnd,
  8.   UINT uMsg,
  9.   WPARAM wParam,
  10.   LPARAM lParam );
  11. //Fonctions
  12. int APIENTRY WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
  13.                       LPTSTR lpCmdLine, int nCmdShow)
  14. {
  15.     MSG      msg;
  16. WNDCLASS cls;
  17. // Enregistrer la classe fenêtre de l'application principale.
  18.      cls.hInstance = hInstance;
  19.      cls.lpszMenuName = lpszAppName;
  20.      cls.lpszClassName = lpszAppName;
  21.      cls.hIcon = LoadIcon(NULL,IDI_WARNING);
  22.      cls.hCursor = LoadCursor(NULL,IDC_ARROW);
  23.      cls.hbrBackground =(HBRUSH)(COLOR_WINDOW+1);
  24.      cls.style = CS_VREDRAW | CS_HREDRAW;
  25.      cls.lpfnWndProc = (WNDPROC)WndProc;
  26.      cls.cbWndExtra = 0;
  27.      cls.cbClsExtra = 0;
  28. if ( !RegisterClass( &cls ) )
  29.        return( FALSE );
  30. hInst = hInstance;
  31. // créer l'application principale
  32. hWnd = CreateWindow (lpszAppName,
  33.    lpszAppName,
  34.    WS_OVERLAPPEDWINDOW,
  35.    50,
  36.    50,
  37.    300,
  38.    200,
  39.    NULL,
  40.    NULL,
  41.    hInst,
  42.                           NULL
  43.                           );
  44.     if ( !hWnd )
  45. return( FALSE );
  46. ShowWindow( hWnd, nCmdShow );
  47.    UpdateWindow( hWnd );
  48. while( GetMessage( &msg, NULL, 0, 0) )
  49.     {
  50.          TranslateMessage( &msg );
  51.          DispatchMessage( &msg );
  52.     }
  53.     return( msg.wParam );
  54. }
  55. LONG WINAPI WndProc( HWND hWnd,
  56.   UINT uMsg,
  57.   WPARAM wParam
  58.   , LPARAM lParam )
  59. {
  60. switch(uMsg)
  61. {
  62.  case WM_CLOSE :
  63.  {
  64.   DestroyWindow( hWnd );
  65.  };
  66.  break;
  67.  case WM_DESTROY :
  68.  {
  69.   PostQuitMessage(0);
  70.  };
  71.  break;
  72.  case WM_QUERYENDSESSION :
  73.  {
  74.   DestroyWindow( hWnd );
  75.  };
  76.  break;
  77.  default :
  78.  return  DefWindowProc( hWnd, uMsg, wParam, lParam );
  79. };
  80. return 0;
  81. }

mood
Publicité
Posté le 05-03-2004 à 14:47:30  profilanswer
 

n°665144
docmaboul
Posté le 06-03-2004 à 11:13:45  profilanswer
 

AGA a écrit :

Bonjour,
 
COmment faire avec BCC55+ un bouton?


 
C'est tout simple.
 
Tu déclares la variable globale HWND hWndButton=NULL; et dans ta boucle de messages, tu ajoutes le code suivant :
 

Code :
  1. case WM_CREATE:
  2. hWndButton=CreateWindow("BUTTON", "Mon joli button", WS_CHILD|WS_VISIBLE|WS_TABSTOP, 10, 10, 130, 22, hWnd, NULL, hInst, NULL);
  3. if ( !hWndButton ) {/* error */}
  4. break;


 
Sans oublier dans le case WM_CLOSE de détruire la fenêtre du bouton.
 
Tu vas voir que c'est assez moche. Pour enjoliver un peu le tout, il faut utiliser une police de caractères. Tu déclares donc une variable globale HFONT hFont=NULL; et la fonction suivante :
 

Code :
  1. void CreateButtonFont()
  2. {
  3. LOGFONT lf;
  4. memset(&lf, 0, sizeof(LOGFONT));
  5. strcpy(lf.lfFaceName, "Arial" );
  6. lf.lfHeight=-11;
  7. lf.lfWeight=FW_NORMAL;
  8. lf.lfOutPrecision=OUT_STROKE_PRECIS;
  9. lf.lfClipPrecision=CLIP_STROKE_PRECIS;
  10. lf.lfQuality=DRAFT_QUALITY;
  11. lf.lfPitchAndFamily=VARIABLE_PITCH|FF_SWISS;
  12. hFont=CreateFontIndirect(&lf);
  13. }


 
Et tu transformes le case WM_CREATE ainsi
 

Code :
  1. hWndButton=CreateWindow("BUTTON", "Mon joli button", WS_CHILD|WS_VISIBLE|WS_TABSTOP, 10, 10, 90, 22, hWnd, NULL, hInst, NULL);
  2. /* histoire de faire joli */
  3. CreateButtonFont();
  4. if ( !hWndButton || !hFont ) MessageBox(hWnd, "No more ressources", "Error", MB_OK|MB_ICONEXCLAMATION);
  5. if ( hFont ) SendMessage(hWndButton, WM_SETFONT, (WPARAM)hFont, TRUE);


 
Sans oublier de détruire la police dans le WM_CLOSE avec :
 

Code :
  1. if ( hFont ) {DeleteObject(hFont); hFont=NULL;}


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  BCC5.5 - faire un bouton, une interface graphique.

 

Sujets relatifs
[HTML] Tailler un bouton de type button ou submit ?[ORACLE] Interface Administration?
[PHP] Exécuter une fonction en cliquant sur le bouton d'un formulaire[VB] - Dessiner un graphique - Boucler sur l'indice d'un attribut ? oO
Borland | Résolu | Créer un bouton avec une image à la place du texteBouton pour mettre en plein ecran
Commenter griser/dégriser un bouton de Formulaire ?[PHP] Safe mode et outils graphique
MRTG - Rrdtool Graphiquecreation bouton dynamique/lien dynamique
Plus de sujets relatifs à : BCC5.5 - faire un bouton, une interface graphique.


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR