Windows Programmierung: Statusbar |
Einführende Informationen über die Programmierung von Kontrollelementen werden hier vorausgesetzt.
Die Statusbar gehört zu den Common Controls. In C-Programmen ist das Einbinden der Datei COMMCTRL.H notwendig und die comctl32.lib muss zum Programm gelinkt werden.
#include <commctrl.h> HWND CreateStatusBar(HWND hWnd, UINT ResID) { HWND hWndStatus; hWndStatus = CreateWindowEx (0L, // extended style STATUSCLASSNAME, "", WS_CHILD | WS_BORDER | WS_VISIBLE | SBS_SIZEGRIP, // window styles 0, 0, 0, 0, // x, y, width, height hWnd, (HMENU)ResID, hInst, NULL); return hWndStatus; } |
case WM_SIZE: RECT rSB; GetWindowRect(hwndStatus, &rSB); MoveWindow (hwndStatus, 0, HIWORD(lParam) - 10, LOWORD(lParam), HIWORD(lParam), TRUE); MoveWindow(hwndList, 0, rcl.bottom - rcl.top, LOWORD(lParam), HIWORD(lParam) - (rSB.bottom - rSB.top) + 1, TRUE ); break; |
Im Beispiel wird davon ausgegangen, dass das Hauptfenster von einer Listbox mit dem Handle hwndList vollständig gefüllt ist. Diese muss sich etwas einschränken, um der Statusbar Platz zu machen.
void SetStatusText(HWND hWndStatus, char *Text) { SendMessage (hWndStatus, SB_SETTEXT, 0, (LPARAM)Text); } |
static int aWidths [2] = {200,300}; SendMessage (hWndStatus, SB_SETPARTS, 2, (LPARAM)aWidths); SendMessage (hWndStatus, SB_SETTEXT, 0, (LPARAM)"Linkes Feld"); SendMessage (hWndStatus, SB_SETTEXT, 1, (LPARAM)"noch n Feld"); |
Und wieder zurück:
SendMessage (hWndStatus, SB_SIMPLE, 0, 0); |
Homepage - Windows-API-Programmierung | (C) Copyright 1999 Arnold Willemer |