Vorheriges Kapitel:  Windows Steuerelemente   Nächstes Kapitel: Grafik       Inhaltsverzeichnis Inhaltsverzeichnis       Die Downloadseite Download       Kontakt Kontakt

 

Menüs

 

 

Menüpunkte
Symbolschaltflächen
Statuszeilen
Tooltips

 

 

 

 

Wenn Sie vorhaben, in Ihrer Anwendung Menüs zu benutzen, dann ist es in vielen Fällen nützlich, Ihre Ansicht nicht von CView, sondern von CFormView abzuleiten. Somit erreichen Sie, daß Ihre Dialogseite direkt im Anwendungsgerüst gebunden ist. Für eine derartige Dialogseite brauchen Sie keine neue Klasse zu erzeugen. Die Steuerelemente Ihrer Dialogseite werden der Ansicht zugeordnet. Der Resource-Editor erzeugt die Dialogseite automatisch für Sie. Auch wenn Sie die Dialogseite nicht von CDialog abgeleitet haben, stehen Ihnen die meisten Funktionen der MFC Klasse CDialog zur Verfügung. Es wird Ihnen auffallen, daß Ihre Dialogseite die Schaltflächen OK und Cancel nicht mehr hat. Sie brauchen auch diese Schaltflächen hier nicht, denn Sie steuern Ihr Programm über die entsprechenden Menüpunkte. Sie leiten die Ansicht von CFormView ab, wenn Sie im Schritt sechs des AppWizards für Ihre View-Datei als Basisklasse die MFC Klasse CFormView wählen.


Abbildung
Die Anwendung menues dient als Beispielprogramm zu diesem Thema. Diese Anwendung realisiert auch einen einfachen Taschenrechner, wobei das Programm jetzt Menüs, Symbolschaltflächen und Statuszeilen und Tooltips benutzt.

Abbildung
Legen Sie mit Hilfe von AppWizard ein neues Projekt namens menues an. Im Schritt eins des AppWizards aktivieren Sie die Option Einzelnes Dokument, akzeptieren Sie bis zum Schritt sechs die Standardeinstellungen und wählen Sie im Schritt sechs für die Ansicht die MFC Klasse CFormView als Basisklasse. Wenn AppWizard die Anwendung für Sie erstellt hat, gehen Sie im Resource-Editor zum Resource Menü. Mit einem Doppelklick auf z.B. IDR_MAINFRAME rufen Sie den Menü-Editor auf. Falls Sie im Schritt eins des AppWizards die Option MDI(Mehre Dokumente gewählt haben, stehen Ihnen zwei Menüs zur Verfügung. Benutzen Sie in diesem Falle am besten das Menü mit der Erweiterung (...Type), denn dort stehen Ihnen mehre Befehle zur Verfügung. Im Menü-Editor haben Sie die Möglichkeit, mit der Del Taste die vorhandenen Menüs oder Menüpunkte zu löschen, oder auch eigene Menüpunkte hinzuzufügen. Sie werden auf der Menüleiste ein leeres Kästchen sehen, positionieren Sie es einfach auf die gewünschte Stelle der Menüleiste und mit einem Doppelklick gelangen Sie zu den Eigenschaften des Menübefehls. Beschriften Sie es entsprechend. Sie können das Zeichen & vor einer Buchstabe im Beschriftungsfeld setzen, und dann können Sie Mit der ALT+X Taste den besagten Menüpunt mit der Tastatur aktivieren. Sie müssen natürlich jedem Menüpunkt eine eindeutige Bezeichnung(ID) geben. Es ist gebräuchlich, die IDs für Menübefehle mit ID_ anfzuangen. Im Beispielprogramm menues heißt z.B. die Bezeichnung für den Befehl Addieren ID_PLUS.

Abbildung
Da Menüpunkte Befehle sind, müssen Sie wie bei den Schaltflächen in den Dialogseiten, mit Hilfe von ClassWizard Nachrichten-Funktionen für Ihre Menüpunkte erzeugen. Wählen Sie dafür im ClassWizard die View Klasse, markieren Sie die ID eines Menübefehls, wählen Sie die Nachricht COMMAND und fügen Sie die von ClassWizard vorgeschlagene Nachrichten-Funktion hinzu. Sie müssen nun dieser Nachrichten-Funktion mit entsprechendem Quellcode die gewünschte Funktionalität geben. Der Quellcode für die Menübefehle im Beispielprogramm menues ist identisch mit dem der Schaltflächen im Programm trechner. Der Quellcode für den Befehl Addieren sieht zum Beispiel folgendermaßen aus:

void CMenuesView::OnPlus() 
{
	
UpdateData(TRUE);
m_ergebnis=m_zahl1+m_zahl2;
UpdateData(FALSE);
}

Sie können zu einem Menübefehl auch eine Befehlsaktualisierung schreiben. Dies ist eine UPDATE_COMMAND_UI Nachricht, die ClassWizard Ihnen zu jedem Menübefehl zur Verfügung stellt. In der Nachrichten-Funktion für eine Befehlsaktualisierung können die Bedingungen für Aktivierung bzw. Nichtaktivierung eines Menübefehls geschrieben werden. Von dieser Möglichkeit ist im Beispielprogramm menues Gebrauch gemacht worden. Der Menübefehl Dividieren soll nur aktiviert werden, wenn in der Editbox für die zweite Zahl eine Ziffer außer Null steht, oder die besagte Editbox nicht ganz leer ist. Um dies zu realisieren, markieren Sie für den Menüpunkt Dividieren die Nachricht UPDATE_COMMAND_UI und erzeugen Sie die von ClassWizard vorgeschlagene Nachrichten-Funktion dazu. Der Bezeichner(ID) für den Befehl Dividieren heißt im Beispielprogramm ID_TEIL. Die Nachrichten-Funktion für die Befehlsaktualisierung sieht folgendermaßen aus:

void CMenuesView::OnUpdateTeil(CCmdUI* pCmdUI) 
{
CString text;

	GetDlgItemText(IDC_ZAHL2, text);
	if(text=="0" |text=="")
	{
	pCmdUI->Enable(FALSE);
	}

}

Mit Hilfe der MFC Funktion GetDlgItemText() schreiben Sie den Inhalt der Editbox für die zweite Zahl in die CString Variable text. Falls der Inhalt Null oder Leer sein sollte, sorgt die Funktion pCmdUI->Enable(FALSE); dafür, daß der Befehl Dividieren deaktiviert wird. Um ganz genau zu sein, der Parameter FALSE sorgt für die Deaktivierung.

Es ist öfter der Fall, daß Sie mit einem Menübefehl eine weitere Dialogseite, die Sie schon programmiert haben, aufrufen möchten: Im Beispielprogramm menues demonstriert der Menüpunkt Extra/Click me einen solchen Fall. Es geht ganz einfach: Sie müssen in der Nachrichten-Funktion des Befehls Click me die MFC Funktion DoModal() aufrufen: der Quellcode für die Nachrichten-Funktion zu dem Befehl Click me sieht wie folgt aus:

void CMenuesView::OnClickme() 
{
CExtra dlg;
dlg.DoModal();
}

CExtra ist die Klasse Ihrer Dialogseite, die Sie mit dem Befehl Click me aufrufen möchten. Mit DoModal() rufen Sie die Dialogseite auf den Bildschirm auf. Damit dies auch so funktioniert, müssen Sie vorher die Headerdatei der Klasse CExtra mit der Anweisung #include"Extra.h" in die Ansicht bzw. CMenuesView.cpp gebunden haben.

 

Damit Sie Symbolschaltflächen benutzen können, müssen Sie im Schritt vier des AppWizards die Standardeinstellung akzeptiert haben. Symbolschaltflächen haben die gleiche Funktion wie Menübefehle. Normalerweise duplizieren Symbolschaltflächen die Menübefehle. Daher muß eine Symbolschaltfläche dieselbe ID haben, wie der entsprechende Menübefehl. Im Beispielprogramm menues haben z.B. der Menüpunkt Addieren und die Symbolschaltfläche + dieselbe ID, nämlich ID_PLUS.

Die Gestaltung der Symbolschaltflächen ist auch relativ einfach. Wenn Sie im Resource-Editor zum Toolbar gehen und z.B. auf IDR_MAINFRAME doppelklicken, rufen Sie somit den Toolbar-Editor auf. Der Toolbar-Editor funktioniert wie der Windows Bitmap-Editor Paintbrush. Sie werden eine Reihe von gemalten Symbolschaltflächen vorfinden, die Sie für Ihre spezielle Belange umgestalten können. Wenn Sie im Toolbar-Editor auf eine Symbolschaltfläche doppelklicken, gelangen Sie zu den Eigenschaften dieser Symbolschaltfläche. Hier können Sie dann u.a. die ID der Symbolschaltfläche bestimmen.


Abbildung
Wenn Sie nicht alle Symbolschaltflächen, die Sie im Toolbar-Editor vorgefunden haben, benötigen, ziehen Sie diese einfach mit der Maus aus der Leiste nach unten links, so werden die überflüssigen Symbolschaltflächen gelöscht.

 

Um eine Statuszeile zu einem Menübefehl oder Symbolschaltfläche zu schreiben, rufen Sie im Resource-Editor den Menü-Editor auf. Wenn Sie auf den gewünschten Menüpunkt doppelklicken, gelangen Sie zu den Eigenschaften des Menüpunktes. Sie können dann im Feld Statuszeilentext(Prompt) den Text Ihrer Statuszeile eingeben. Das ist alles.

 

Es ist Ihnen bestimmt aufgefallen, daß wenn Sie in Windows Programmen z.B. Microsoft Word, den Mauszeiger auf eine Symbolschaltfläche positionieren, erscheint dann eine kurze Beschreibung für diese Symbolschaltfläche mit gelbem Hintergrund. Diese Technik können Sie auch für Ihre Anwendungen benutzen. Wenn Sie die Statuszeile für eine Symbolschaltfläche geschrieben haben, fügen Sie am Ende des Textes für die Statuszeile Backslash und die Buchstabe n(\n). Der Text, den Sie nach \n im Feld Statuszeilentext(Prompt) eingeben, erscheint dann als Tooltip, was auch als QuickInfo bezeichnet wird.

 

 

      Vorheriges Kapitel:  Windows Steuerelemente   Nächstes Kapitel: Grafik       Inhaltsverzeichnis Inhaltsverzeichnis       Die Downloadseite Download       Kontakt Kontakt