OWL Menüs

Willemers Informatik-Ecke

Menüpunkte mit Haken versehen

Unter OWL basiert das "Enablen" und das "Checken" auf dem Command-Enabler. Es wird eine Variable gehalten, die den Zustand repräsentiert. Durch Anklicken des Menüpunkts wird der Inhalt der Variablen (hier FolgeTauschen) gewechselt.

Das Setzen des Hakens erfolgt am einfachsten in der Enable-Funktion. Die übergebene Enable-Variable kann mit der Methode SetCheck bearbeitet werden. Die Enable-Funktion (hier CeOption) wird jedesmal aufgerufen, wenn das Menü aufgeklappt wird.

DEFINE_RESPONSE_TABLE1(tHauptFenster, TWindow)
 ...
EV_COMMAND(OPTION, Option),
EV_COMMAND_ENABLE(OPTION, CeOption),
 ...
END_RESPONSE_TABLE;

void tHauptFenster::Option()
// Antwort auf Klicken
{
    FolgeTauschen = !FolgeTauschen;
}

void tHauptFenster::CeOption(TCommandEnabler &ce)
// Pruefung auf Enabled
{
	ce.SetCheck(FolgeTauschen?TRUE:FALSE);
}
FolgeTauschen ist eine boolesche Variable, deren Wert durch das Anklicken verändert wird.

Direkte Behandlung aller Menüereignisse

Soll das Programm alle Ereignisse, die aus dem Menü kommen selbst verwalten, muß zunächst eine Funktion EvCommand geschrieben werden. Damit die Menüs nicht alle disabled sind, muß eine Enable-Funktion EvCommandEnable definiert werden.

    // In der Fensterklasse...
    virtual LRESULT EvCommand(unsigned int id, HWND hWndCtl, unsigned int notify);
    void EvCommandEnable(TCommandEnabler& e) {e.Enable(1);}

    // ...

LRESULT tMainWindow::EvCommand(unsigned int id, HWND, unsigned int)
{ 
    if (id==M_ENDE) { 
        PostMessage(WM_QUIT);
    } else { 
        switch(id) { 
            // klassische Ereignisbehandlung 
            case M_FILEOPEN:
                break;
                // ...
            default:
        } 
    } 
} 


Homepage - OWL-Index 22.9.2001 (C) Copyright 1999, 2001 Arnold Willemer