Artikel pedia
| Home | Kontakt | Artikel einreichen | Oberseite 50 artikel | Oberseite 50 autors
 
 


Artikel kategorien
Letztes fugte hinzu
    Ms-access

   Instrumentation + schnittstellen

   Pc tuning - volle kraft voraus für ihr system

   Informatorische grundlagen

   Javascript

   Interne sortieralgorithmen - der kern der sache

   Plotter und sonstige drucker

   Frage 20 (rössl priska)

   Internet - programmierung

   Monitore

   Semesterarbeit und spezialgebiet für informatik

   Erörterungs zum thema

   Inhaltsverzeichnis

   Einführung in die entwicklung ganzheitlicher informationssysteme:

   Titel dokument
alle kategorien

  Windows - programmierung in c++(mfc)

Windows - Programmierung in C++(MFC)   Einleitung zu MFC  MFC = Microsoft Foundation Classes MFC ist ein objektorientierter Überbau über Windows API.   Vorteile zu normaler C-Programmierung: Betriebssystemunabhängiger Einige Routinearbeiten bleiben erspart wie z.B.: Meldungsschleife im Hauptprogramm Wenig Type Casting = höhere Sicherheit. Statt dessen spezialisierte Element Funktionen     Namen Alle Klassen in MFC beginnen mit C(CWnd, CString, CPoint) Member Variable beginnen mit m_(z.B.

: m_hInstance) Ungarische Notation verwenden Allgemeine Hilfsfunktionen beginnen mit Afx(z.B.: AfxMessageBox)     Wizards:   Application Wizard: zum generieren eines Programm - Gerüsts das auf der Document - View Architektur basiert. Grundlage der Document-View Architektur ist die Trennung von Daten - Speicherung und Daten - Darstellung.   Die Daten des Programmes werden in einem Dokument Objekt abgespeicher. Die Klasse von der das Objekt abgeleitet wird ist CDocument, das die technische Realisierung der Datenspeicherung des Programmes enthält.

  Das Hauptfenster wird mit einem Frame-Objekt verwaltet (Basisklasse CFrameWnd). Dieses Objekt verwaltet den Fensterrahmen, Menü, Symbolleiste und die Statuszeile.   Das Anzeigen der Daten erfolgt mit dem View Objekt, das von CView abgeleitet wird. Zu einem Document - Objekt kann es mehrere Views geben.   Class Wizard: Zum Erstellen von neuen oder ändern und erweitern von bereits bestehenden Klassen. Mit dem Class Wizard kann man die Elementfunktionen einer Klasse mit Windows Ereignissen verbinden.

Der Wizard erleichtert außerdem einige weitere Dinge wie das Überladen von virtuellen Funktionen oder das automatische Generieren des Dialog Datenaustausches. Die Objekte   Das Anwendungs Objekt  Ein MFC-Programm hat immer ein Anwendungs Objekt, welches die wesentlichen Aufgaben von WinMain übernimmt z.B.: Registrieren, Erzeugen und Anzeigen des Hauptfensters Meldungsschleife Das eigene Anwendungsobjekt wird von der MFC-Klasse CWinApp abgeleitet und normalerweise als globale Variable erzeugt, und der Ablauf, der WinMain entspricht, verbirgt sich im Konstruktor des Objekts.   Durch das Überladen von virtuellen Funktionen wird die eigene Klasse an die entsprechenden Bedürfnisse angepaßt. Z.

B.: Überladen von "InitInstance"    Das Hauptfenster Objekt  Das Hauptfenster Objekt wird von der Funktion InitInstance angelegt und verwaltet das Hauptfenster der Anwendung. Die Klasse des Hauptfensters muß von der passenden MFC Fenster Klasse abgeleitet werden(z.B.:CFrameWnd).   Das Windows Objekt wird im Konstruktor durch Aufruf der Create Methode erzeugt:   CmyWindow:: CmyWindow() { Create (NULL, "Hello Windows Programm", WS_OVERLAPPEDWINDOW, RectDefault,NULL,"MENU_1"); }  Die Schnittstellen- und Steuerelement Objekte  Die Schnittstellen Objekt ermöglichen ein objektorientiertes Arbeiten mit den Elementen von Windows Fenstern wie z.

B.: Listboxen Liste->AddString("Erste Zeile"); im Gegensatz zu SendDlgItemMessage (hWnd,IDC_LIST,LB_ADDSTRING,0,(LPARAM) (LPSTR) "Erste Zeile");   Mit Hilfe der Schnittstellen Objekte ist es außerdem möglich auf Windows Nachrichten durch Nachrichten Tabellen (Message Maps) und Nachrichten-Behandler-Funktionen zu reagieren. Alle vordefinierten Klassen die als Ausgangspunkt für eigene Klassen verwendet werden (wie z.B.: CDialog, CDistBox, CView) haben CWnd als Basisklasse.   Für Steuerelemente gibt es verschiedene Klassen: CButton, CEdit, CStatic, CListbox,.

... Ein Steuerelement wird folgendermaßen einem Resource Element zugeordnet: CListBox *liste = (CListBox *) GetDlgItem (IDD_LIST1)   Häufige Elementfunktionen bei Steuerelementen.: Bei Buttons. SetCheck, GetCheck Bei Listen: AddString, InsertString, DeleteString, ResetContent, SetItemData, GetItemData, GetCurSel, SetCurSel, GetCount, FindString, SelectString      Das Dokument Objekt  Das Dokument Objekt ist von CDocument abgeleitet und verwaltet die Daten der Anwendung.

Z.B.: das Speichern und Laden der Daten vom/in die Datei und kommuniziert mit den View-Objekten.   Wichtige Element Funktionen:   SetModifiedFlag Diese Funktion bewirkt, daß beim Schließen, Öffnen usw. der Benutzer gefragt wird, ob er das Dokument speichern will. UpdateAllViews Ruft für alle View Objekte die Element Funktion OnUpdate auf.

  OnNewDocument Initialisiert die Daten des Dokuments OnOpenDocument Zum Initialisieren der Daten, die nicht aus der Datei gelesen werden. DeleteContents Entfernt alte Daten des vorherigen Dokuments aus dem Speicher und gibt Ressourcen frei. Serialize Zum Lesen und Schreiben der Daten in die Datei. Das Öffnen und Schließen der Datei wird von Anwendungs-Rahmen übernommen.   Aufruf Sequenzen:   OnNewDocument: DeletContents OnOpenDocument: Datei öffnen, DeleteContents, Serialize, Datei schließen OnCloseDocument: DeleteContents   Serialize   Die Serialize Funktion dient zum Speichern und Laden aus Dateien. Diese Funktionen können mittels Überladungder virtuellen Serialize Funktion erreicht werden.


à Serialize(CArchive& ar)   Wichtige Methoden des CArchive Objektes sind: IsStoring() Read() Write()   Z.B.: if(ar.IsStoring()) ar << Info << pos; Die Verwendung ist ähnlich der cin und cout Funktionen.      Das View Objekt  Das View Objekt ist von CView oder CScrollView abgeleitet und verwaltet zum Beispiel Fenster Ausgaben, Maus Aktionen oder Keybord Eingaben.   Vom View Objekt aus kann auf das Dokument Objekt und dessen Daten mittels GetDocument() zugegriffen werden.

  Wichtige Element Funktionen:   OnDraw Entspricht OnPaint. Ein Zeiger auf das DC-Objekt wird bereits als Parameter überliefert. Wichtigste zu überladende Funktion. OnUpdate Wird zum Beispiel durch UpdateAllViews des Dokument Objektes aufgerufen. OnInitialUpdate Zur Initialisierung des View Objektes. Ruft standardmäßig OnUpdate auf.

     Dialog Objekte  Die eigenen Dialogklassen werden von CDialog abgeleitet, und werden der Resource im Konstruktor zugeordnet. Bei modalen Dialogen: CmyDialog:: CmyDialog (CWnd* pwnd): Cdialog (IDD_DIALOG1, pwnd) {...} Bei nicht modalen Dialogen: CmyDialog:: CmyDialog (CWnd* pwnd) { Create (IDD_DIALOG1, pwnd); }     Abhängig davon, ob es sich um einen modalen oder einen nicht modalen Dialog handelt, wird er entweder am Stack oder am Heap angelegt: Modal: CmyDialog dlg(this); Nicht Modal: PDlg = new CmyDialog (this);   Auch die Ausführung und die Beendung des Dialogs ist von der Art des Dialogs abhängig:   Ausführung Beendung Modal: dlg.DoModal(); Aufruf von: Cdialog::EndDialog(int) Nicht Modal: Create im Konstruktor Aufruf von: CWnd::DestroyWindow()     Falls Buttons mit den Kennungen IDOK und IDCANCEL erstellt werden, so rufen diese beiden standardmäßig EndDialog auf.

Das heißt, daß OnOk() und OnCancel() bei nicht modalen Dialogen unbedingt überladen werden müssen. Die Freigabe des Dialog Objektes geschieht bei modalen Dialogen automatisch. Bei nicht modalen Dialogen muß man das Objekt manuell mit delete(this) löschen.   Wenn man bei Dialogen Steuerelemente vor dem Anzeigen belegen oder den Focus setzen will, so muß an die virtuelle Methode BOOL Cdialog::OnInitDialog() überladen.   Die Nachrichten Tabelle funktioniert genauso wie im Hauptfenster. Nicht in die Message Map gehören allerdings OnInitDialog, OnOK und OnCancel.

In die MessageMap gehört OnClose.    Nachrichten - Tabellen  Nachrichten Tabellen (Message Maps) sind dazu da, um beim Eintreffen von Windows Meldungen automatisch Element Funktionen aufzurufen. Dadurch ist kein manuelles analysieren von wParam und lParam mehr notwendig. Nachrichten Tabellen werden mittels Makros realisiert, da diese den virtual Mechanismus nach bauen aber effizienter sind.   Beispiel.   class CmyWindow : public CFrameWnd { afx_msg void OnPaint(); afx_msg void OnLButtonDown(UINT, Cpoint); DECLARE_MESSAGE_MAP(); //Legt fest, das die Klasse eine Message-Map verwendet };   BEGIN_MESSAGE_MAP(CmyWindow,CframeWnd) //Definiert die Message-Map ON_WM_PAINT() //Angabe ohne Parameter, da diese fix vorgegeben sind.

ON_WM_LBUTTONDOWN() //Angabe ohne Parameter, da diese fix vorgegeben sind. END_MESSAGE_MAP()    Der Dialog-Daten-Austausch Der Dialog-Daten-Austausch(DDX/DDV) ist ein Mechanismus zum Austausch zwischen dem Dialog Objekt und den Steuerelementen des Dialoges. Für die Steuerelemente müssen passende Member-Variablen im Dialog Objekt enthalten sein. Bei Modalen Dialogen wird der Transfer automatisch bei OnInitDialog und OnOK ausgeführt. Der Transfer der Daten kann auch manuell mittels UpdateDate(TRUE/FALSE) aktiviert werden: UpdateData(TRUE) Transfer vom Dialogobjekt zu den Steuerelementen UpdateData(FALSE) Transfer von den Steuerelementen zum Dialogobjekt     Kernstück des DDX/DDV ist die Funktion DoDataExchange.

Suchen artikel im kategorien
Schlüsselwort
  
Kategorien
  
  
   Zusammenfassung Der Vorleser

   sachtextanalyse

   interpretation zwist

   Fabel interpretation

   literarische charakteristik

   interpretation bender heimkehr

   felix lateinbuch

   interpretation der taucher von schiller

   textbeschreibung

   charakterisierung eduard selicke
Anmerkungen:

* Name:

* Email:

URL:


* Diskussion: (NO HTML)




| impressum | datenschutz

© Copyright Artikelpedia.com