Zum Inhalt springen

einiges zu CPropertyPage


jasso

Empfohlene Beiträge

hi leute

:confused:

ich hätt da noch a paar fragen zu CPropertyPage:

was fang ich mit m_psp an? (wird als membervariable angegeben o.ä.)

warm bringt mir der assistent zum ableiten von der MFC klasse immer die meldung dass ich keinen Dialog zugeordnet hab, obwohl ich bei CPropertyPage keinen Dialog festlegen brauch?

was fang ich mit der Methode QuerySiblings an und wie verwend ich des?

und was bringt mir des DECLARE_DYNCREATE(...) beim ableiten?

ok des wärs eigentlich soweit

für jedweder hilfe wär ich wirklich sehr verbunden

mercy jasso

Link zu diesem Kommentar
Auf anderen Seiten teilen

Originally posted by jasso

was fang ich mit m_psp an? (wird als membervariable angegeben o.ä.)

Das ist die PROPSHEETPAGE-Struktur, die der PropertyPage zu Grunde liegt. Diese Struktur wird für die nicht-MFC-PropertyPage-Funktionen benötigt, und da die MFC auch nichts weiter tut, als diese Funktionen zu kapseln, enthält jede Instanz von CPropertyPage so eine Struktur.

warm bringt mir der assistent zum ableiten von der MFC klasse immer die meldung dass ich keinen Dialog zugeordnet hab, obwohl ich bei CPropertyPage keinen Dialog festlegen brauch?
Eine von CPropertyPage abgeleitete Klasse sollte mit einer Dialogressource verknüpft werden, die dann den Inhalt der Page darstellt.

was fang ich mit der Methode QuerySiblings an und wie verwend ich des?
Mit QuerySiblings kannst Du eine Nachricht an alle anderen Pages des selben PropertySheets schicken. Dazu muss jede Page, die diese Nachricht empfangen soll, eine Nachrichtenbehandlungsfunktion für PSM_QUERYSIBLINGS haben. Darin schlagen die Nachrichten auf. Sobald eine Page in dieser Funktion nicht Null zurückgibt, werden die weiteren Pages nicht mehr gefragt. Über die Parameter kannst Du unterschiedliche Dinge abfragen. Möglich wäre z.B. eine Frage an alle Pages, ob der Übernehmen-Button aktiviert werden muss, weil Änderungen gemacht wurden.

und was bringt mir des DECLARE_DYNCREATE(...) beim ableiten?
DECLARE_DYNCREATE deklariert ein CRuntimeClass-Member, die Methode GetRuntimeClass und die statische Methode CreateObject. Zusammen mit dem Makro IMPLEMENT_DYNCREATE hat man so eine einfache Standardimplementierung für die CObject-Unterstützung.
Link zu diesem Kommentar
Auf anderen Seiten teilen

Originally posted by jasso

bloß des mit den Nachrichten hab ich immer noch net so ganz kapiert!

wie kann des Ojekt a Nachricht verarbeiten, die es kriegt?

Nachrichten sind ein grundlegendes Konzept von Windows. Nachrichten werden an Fenster gesandt, die dann darauf reagieren. Jede MFC-Klasse, die von CWnd abgeleitet ist, erhält und verarbeitet Nachrichten, ohne dass der Programmierer etwas tun muss. Man kann aber die Art und Weise, wie ein Fenster auf bestimmte Nachrichten reagiert, auch selbst programmieren. Das sind dann sogenannte Nachrichtenbehandlungsfunktionen.

Wenn eine von CPropertyPage abgeleitete Klasse eine solche Behandlungsfunktion für die Nachricht PSM_QUERYSIBLINGS hat, dann wird diese Funktion aufgerufen, wenn aus einer anderen PropertyPage des Sheets QuerySiblings aufgerufen wird. Wozu das verwendet wird, bleibt dem Programmierer überlassen. Man kann diesen Mechanismus z.B. dazu verwenden, um Daten zwischen den Pages zu synchronisieren.

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 2 Wochen später...

Jetzt weiß ich was eine Nachricht ist.

Nur leider kann ich die Methode QuerySilblings der Klasse CPropertyPage nicht anwenden.

Ich habe jetzt die MSDN nach einer erklärung für wParam und lParam durchforstet, kann mir aber keinen Reim darauf machen.

könnten Sie mir bitte ein konkretes beispiel dazu geben?

Gegeben:

ich habe mein CPropertySheet Mit DoModal erzeugt, und habe mindestens zwei CPropertyPages darin. wie kann ich den Übernehmen-Button auf allen CPropertyPages anzeigen? oder zumindest welche Werte muss ich an QuerySilblings übergeben, damit das CPropertySheet dies für mich macht.

besten dank

mfg jasso

Link zu diesem Kommentar
Auf anderen Seiten teilen

Originally posted by jasso

Nur leider kann ich die Methode QuerySilblings der Klasse CPropertyPage nicht anwenden.

Ich habe jetzt die MSDN nach einer erklärung für wParam und lParam durchforstet, kann mir aber keinen Reim darauf machen.

könnten Sie mir bitte ein konkretes beispiel dazu geben?

Kein Grund, mich zu siezen. ;)

wParam und lParam sind einfach zwei 32-Bit-Werte. Ob Du da Werte reinsetzen musst, und welche, hängt davon ab, was Du mit QuerySiblings machen willst.

wie kann ich den Übernehmen-Button auf allen CPropertyPages anzeigen?
Verstehe ich nicht. Der Übernehmen-Button wird doch per Default angezeigt, solange Du nicht in m_psh.dwFlags der Sheet-Klasse PSH_NOAPPLYNOW setzt.

oder zumindest welche Werte muss ich an QuerySilblings übergeben, damit das CPropertySheet dies für mich macht.
Von allein machen Sheet und Pages bei QuerySibling gar nichts. Was QuerySibling macht, und wie es auf die übergebenen Werte reagiert, musst Du in den Nachrichtenbehandlungsfunktionen der Pages selbst programmieren.
Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...