jasso Geschrieben 17. November 2002 Geschrieben 17. November 2002 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 Zitieren
Klotzkopp Geschrieben 17. November 2002 Geschrieben 17. November 2002 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. Zitieren
jasso Geschrieben 17. November 2002 Autor Geschrieben 17. November 2002 na denn gleich mal besten dank!!!! bloß des mit den Nachrichten hab ich immer noch net so ganz kapiert! wie kann des Ojekt a Nachricht verarbeiten, die es kriegt? (oder bin ich da ganz auf der falschen spur) mfg jasso Zitieren
Klotzkopp Geschrieben 18. November 2002 Geschrieben 18. November 2002 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. Zitieren
jasso Geschrieben 27. November 2002 Autor Geschrieben 27. November 2002 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 Zitieren
Klotzkopp Geschrieben 27. November 2002 Geschrieben 27. November 2002 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. Zitieren
Empfohlene Beiträge
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.