Benutzer mit den meisten Antworten
CMFCPropertySheet in Fehler beim Klicken auf OK

Frage
-
Ich möchte einen Optionsdialog erstellen. Ich habe bisher eine Klasse von CMFCPropertyPage und eine von CMFCPropertySheet abgeleitete Klasse. Den Dialog kann ich auch aufrufen. Ich habe noch nichts eingebaut was die Optionen Übergibt, o.ä. Ich hbe wirklich nur die Beiden Klasse. Wenn ich jedoch auf 'OK' klicke bekomme ich folgende Fehlermeldung:
Unbehandelte Ausnahme bei 0x76fc4518 in Project.exe: 0xC0150010: Der zu deaktivierende Aktivierungskontext ist für den aktuellen Ausführungsthread nicht aktiv.
Außerdem:
kann ich diesen Optionsdialog auch nichtmodal gestalten?
Wi bekomme ich die Button 'Übernehmen' und 'Hilfe' weg?
VisualCPlusPlus
Antworten
-
ON_MESSAGE(WM_USERAPPLY,OnUserApply)
kam der Fehler:
Fehler 1 error C2440: 'static_cast': 'LRESULT (__thiscall CProjectDlg::* )(void)' kann nicht in 'LRESULT (__thiscall CWnd::* )(WPARAM,LPARAM)' konvertiert werden c:\...\documents\visual studio 2010\projects\project\project\projectdlg.cppNein Deine Funktion muss die Signatur:
LRESULT Klasse::Name(WPARAM wp, LPARAM lp)
haben
Martin Richter -- MVP for VC++ [Germany] -- http://blog.m-ri.de- Als Antwort vorgeschlagen Martin RichterModerator Samstag, 23. Juli 2011 07:18
- Bearbeitet Martin RichterModerator Samstag, 23. Juli 2011 07:18
- Als Antwort markiert KK Senior Samstag, 23. Juli 2011 14:34
Alle Antworten
-
Mir ist eingefallen woran der Fehler liegt: ich habe die Nachricht WM_USERAPPLY gesendet, ich habe jedoch keine Funktion gehabt die mit dieser Nachricht verknüpft war. Allerdings... als ich in die CPP-Datei des Hauptdialogs, der das Optionsfenster aufruft, die Nachrichtenbehandlungsroutine hinzufügen wollte:
ON_MESSAGE(WM_USERAPPLY,OnUserApply)
kam der Fehler:
Fehler 1 error C2440: 'static_cast': 'LRESULT (__thiscall CProjectDlg::* )(void)' kann nicht in 'LRESULT (__thiscall CWnd::* )(WPARAM,LPARAM)' konvertiert werden c:\...\documents\visual studio 2010\projects\project\project\projectdlg.cpp
Liegt das daran das ich den Optionsdialog, von einem Dialogaus Öffne?
-----------------------------------
Noch ne andere Frage zu meinen ersten beiden:
Gibt es eine Möglichkeit die Listenansicht aussehen zu lassen wie im Office 2010 Optionsmenü?, also mit den Ornagenen Button und nicht das blau-weis Schema
Und kann ich mir den Dialog auch im Stil Tooltip anzeigen lassen?
VisualCPlusPlus -
ON_MESSAGE(WM_USERAPPLY,OnUserApply)
kam der Fehler:
Fehler 1 error C2440: 'static_cast': 'LRESULT (__thiscall CProjectDlg::* )(void)' kann nicht in 'LRESULT (__thiscall CWnd::* )(WPARAM,LPARAM)' konvertiert werden c:\...\documents\visual studio 2010\projects\project\project\projectdlg.cppNein Deine Funktion muss die Signatur:
LRESULT Klasse::Name(WPARAM wp, LPARAM lp)
haben
Martin Richter -- MVP for VC++ [Germany] -- http://blog.m-ri.de- Als Antwort vorgeschlagen Martin RichterModerator Samstag, 23. Juli 2011 07:18
- Bearbeitet Martin RichterModerator Samstag, 23. Juli 2011 07:18
- Als Antwort markiert KK Senior Samstag, 23. Juli 2011 14:34
-
Meine Funktion:
LRESULT CProjectDlg::OnUserApply(void)
{
return 0;
}----------
Die Vorwärtsdeklaration im Header:
afx_msg LRESULT OnUserApply(void);----------
Die Nachrichtenverknüpfung:
ON_MESSAGE(WM_USERAPPLY, CProjectDlg::OnUserApply)----------
Was muss ich daran nun ändern?
VisualCPlusPlus -
Achso es muss so aussehen:
LRESULT CProjectDlg::OnUserApply(WPARAM wParam, LPARAM lParam)
{
return 0;
}----------
Die Vorwärtsdeklaration im Header:
afx_msg LRESULT OnUserApply(WPARAM wParam, LPARAM lParam);----------
Jetzt Funktioniert es
Die Nachrichtenverknüpfung:
ON_MESSAGE(WM_USERAPPLY, CProjectDlg::OnUserApply)
---------
Und wie ist es mit den anderen "kleinigkeiten"
VisualCPlusPlus -
Naja, ob und wie ich den Dialog nicht Modal machen kann. Und ob es möglich ist das Layout wie ein Tool-Window zu haben. Außerdem wäre noch das Problem wie ich Die Button in der Listenansicht der Registerkarten so aussehen lassen kann wie beim MS Office. Da wir gerade dabei sind, wie kann man da Trennstriche einfügen?
VisualCPlusPlus