Windows-Controls: B-Barre d'état (status bar)

Description

Bonjour,

Plutôt que d'utiliser une fenêtre "edit" pour montrer la situation d'un logiciel, affichons maintenant la barre d'état (status bar).

Une barre d'état est une fenêtre horizontale au bas d'une fenêtre parentale dans laquelle une application peut afficher différents types d'informations d'état.

Cette fois, en plus de "windows.h", nous incluons aussi "Commctrl.h" [accompagné de #pragma comment(lib,"comctl32.lib")], avec son initialisation "InitCommonControlsEx(…)".

La fonction CALLBACK Wpro(…) peut être codée de la manière suivante:
const int CV=WS_CHILD|WS_VISIBLE,BCV=WS_BORDER|CV
  ,SCV=SBARS_SIZEGRIP|CV,CVA=CV|BS_AUTORADIOBUTTON;
const char *mes[] {" CB unchecked"," CB checked"};
const enum {IdCB=17,IdRd,IdGr,IdBl};
HWND stb;

LRESULT CALLBACK Wpro(HWND h,UINT m,WPARAM wP,LPARAM lP) {
  PAINTSTRUCT ps;
  HDC hdc;
  static int chk,pa[]={50,140,190};

  switch(m) {
  case WM_CREATE:
    stb=CreateWindow(STATUSCLASSNAME," Status:",SCV,0,0,0,0,h,0,0,0);
      SendMessage(stb,SB_SETPARTS,sizeof(pa)/sizeof(int),(LPARAM)&pa);
    CreateWindow("BUTTON","CB",BCV|BS_CHECKBOX,50,90,60,20,h,(HMENU)IdCB,0,0);
    CreateWindow("BUTTON","Couleur",CV|BS_GROUPBOX,220,40,88,110,h,0,0,0);
    CreateWindow("BUTTON","Red",CVA,230,70,64,20,h,(HMENU)IdRd,0,0);
    CreateWindow("BUTTON","Green",CVA,230,95,64,20,h,(HMENU)IdGr,0,0);
    CreateWindow("BUTTON","Blue",CVA,230,120,64,20,h,(HMENU)IdBl,0,0);
    return 0;
  case WM_COMMAND:
    switch(wP) {
    case IdCB: chk=!IsDlgButtonChecked(h,IdCB); CheckDlgButton(h,IdCB,chk);
      SendMessage(stb,SB_SETTEXT,1,(LPARAM)mes[chk]); return 0;
    case IdRd: SendMessage(stb,SB_SETTEXT,2,(LPARAM)" Red"); return 0;
    case IdGr: SendMessage(stb,SB_SETTEXT,2,(LPARAM)" Green"); return 0;
    case IdBl: SendMessage(stb,SB_SETTEXT,2,(LPARAM)" Blue"); return 0;
    } return 0;
  case WM_PAINT: hdc=BeginPaint(h,&ps);
    SetBkMode(hdc,TRANSPARENT); // Texte transparent
    TextOut(hdc,8,8,"Controls: B-StatusBar, par William VOIROL, Sept 2017",52);
    EndPaint(h,&ps); return 0;
  case WM_CLOSE: DestroyWindow(h); return 0;
  case WM_DESTROY: PostQuitMessage(0); return 0;
  }
  return DefWindowProc(h,m,wP,lP);
} // ► msdn.microsoft.com/en-us/library/windows/desktop/hh298378(v=vs.85).aspx
L'array pa[] definit les longueurs de chaque partie de la barre d'état.

Liens:
CodeS-SourceS: Windows-Controls: A-Boutons
Windows common controls demo
Windows: How to Create Status Bars

Bonne lecture …

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.