Home | Lehre | Videos | Texte | Vorträge | Software | Person | Impressum, Datenschutzerklärung |
Selbstgeschriebende Klasse GraphicsObject ist "serialisierbar":
Erbt von CObject. IMPLEMENT_SERIAL, DECLARE_SERIAL. Methode Serialize()
wird automatisch aufgerufen. Geschriebene Dateien mal mit Texteditor ansehen:
Zusatzinfos.
CObList: Verwaltet dynamische Liste, hier von Zeigern auf Grafikobjekte.
Leitet (selbstverständlich) die Serialisierung an enthaltene Objekte
weiter.
Erweiterung des handgemachten MFC-Programms (Standard-Win32-Anwendungsprojekt)
um ein Menü: Mit Datei/Neu/Ressourcenskript eine .rc-Datei.rc im Projekt
anlegen.
Darin mit Einfügen/Ressource/Menu eine Menüvorlage erzeugen und dort Inhalt zusammenklicken (Doppelklick auf leeren Eintrag für neues Menü oder neuen Eintrag; Doppelklick auf bestehenden Eintrag zum Editieren; Umsortieren duch Ziehen). Statuszeilentext und ID vergeben (ID automatisch vorbelegt!). & im Namen für Alt-Tastaturkürzel. Trennlinen. "Popup" anwählen für Untermenü. Die .rc-Datei mit Texteditor ansehen: Quasi-Programm.
Compilerlauf erzeugt .res-Datei (wird in EXE-Datei gelinkt) und extrahiert eine Headerdatei resoure.h für C/C++. Die enthält #define-Befehle für die ID-Nummern und ihre Namen. Bindet man resource.h in den C/C++-Code ein, kann man einfach die symbolischen Namen verwenden. Die generierten Nummern kann man in resource.h die zunächst automatisch generierten ID-Nummern editieren.
Automatisch erzeugte Namensvorsilben der ID-Bezeichner: IDC_XYZ: ein Control, IDD_xyz: ein Dialog, ID_xyz_uvw: Menüeintrag im Menü xyz, IDR_xyz: gesamte Menü-Ressource.
Laden der Menüs in ein Fenster mit Create(...MAKEINTRESOURCE(...)).
Verdrahten der Messages an Funktionen per ON_COMMAND, ON_COMMAND_RANGE in der Message Table. Nicht "verdrahtete" Menüeinträge sind automatisch grau und nicht zu wählen, dadurch weniger Probleme bei Prototyping.
Grauschalten, Häkchen, Punkte für Menüeinträge mit ON_UPDATE_COMMAND_UI oder ...RANGE: wird vor Öffnen für jeden angegebenen Eintrag einzeln aufgerufen.
Kontextmenü (= Mausklick rechts) resultiert in ON_WM_CONTEXTMENU, hier verdrahtet mit OnContextMenu(...)