MFC: Comboboxen

Willemers Informatik-Ecke

Für die Combobox gibt es in der MFC eine eigene Klasse CComboBox. Ein Dialogelement wie die Combobox steht nicht allein, sondern befindet sich immer in einem Fenster oder einer Dialogbox. Aus diesem Grund wird sie normalerweise als Member eines Fensterobjektes angelegt.

  CComboBox m_StatusBox;

Erzeugen der Combobox

In der Init-Member-Funktion wird die Combobox erzeugt. Dazu wird die Create-Funktion des CComboBox-Elements aufgerufen. Ab diesem Augenblick existiert die Combobox auch als Windowsobjekt.

Bearbeitet wird die Combobox mit dem Memberfunktionen des Objektes. Ganz typisch sind hier InsertString und SetCurSel, die in der API als Nachricht den Dialogelementen zugesandt werden. Die unter der API notwendigen Identifizierungswerte wie HWND, HINSTANCE oder Ressource-ID werden hier nicht in den Parametern benötigt, da sie vom Objekt gehalten werden.

CRect rect;
...
if (!m_StatusBox.Create(WS_CHILD|CBS_DROPDOWNLIST|WS_VISIBLE
        |CBS_AUTOHSCROLL|WS_VSCROLL|CBS_HASSTRINGS,
        rect, this, IDC_STATUSBOX))
   return false;

m_StatusBox.InsertString(0, "Intakt");
m_StatusBox.InsertString(1, "Defekt");
m_StatusBox.InsertString(2, "Geklaut");

m_StatusBox.SetCurSel(0);

Ereignisse der Combobox

Unter MFC werden die Ereignisse, die das Programm bearbeiten soll in die Messagemap eingetragen. Will das Programm ein bestimmtes Ereignis bearbeiten, muss die entsprechende Funktion überladen werden und das zugehörige Ereignis in der Messagemap eingetragen werden.

Hier im Beispiel das Selektieren eines anderen Eintrages.

  void OnSelchangeStatusBox();
  DECLARE_MESSAGE_MAP()
} // class-declaration

BEGIN_MESSAGE_MAP(TSpareBar, CToolBar)
...
  ON_CBN_SELCHANGE(IDC_STATUSBOX, OnSelchangeStatusBox)
...
END_MESSAGE_MAP()

void TSpareBar::OnSelchangeStatusBox()
{


Homepage (C) Copyright 2000 Arnold Willemer