CPropertySheet CEdit beim klick auf OK auslesen
-
hallo,
ich habe ein CPropertySheet Dialog mit zweit CPropertyPage Dialogen drin.
Auf einer CPropertyPage ist ein CEdit, was ich beim klick auf OK auslesen will und den Wert zu speichern. Da der Button OK CPropertySheet Dialog sich befindet muss ich von CPropertySheet Dialog irgendwie zugriff auf den CEdit auf CPropertyPage bekommen.
Wie mach ich das?PS: ich hoffe man kann es verstehen wie ich es meine.
-
Du könntest vielleicht auf KillActive der PropertyPage reagieren?
Ich greife meistens nach Verlassen des ProperySheetDialogs auf die Member der Pages zu:
CMeinSheet dlg("Test",NULL,0); if(dlg.DoModal()==IDOK) { CString meineVar=dlg.m_propPageVar.GetVariable(); }wobei im ProperySheetDialog:
public: MeinProperyPage m_propPageVar;im ProperyPageDialog:
public: CString GetVariable()const {return m_meineEditVariable;} private: CString m_meineEditVariable;Tester2
-
CPP_Dau schrieb:
Da der Button OK CPropertySheet Dialog sich befindet muss ich von CPropertySheet Dialog irgendwie zugriff auf den CEdit auf CPropertyPage bekommen.
Warum Verwendest Du nicht die DDX Mechanismen mit UpdateData und DoDataExchange? Gibt es dafür einen Grund. Dies ist in meinen Augen der einfachste Weg, dann sorgt die MFC dafür.
-
Martin Richter schrieb:
CPP_Dau schrieb:
Da der Button OK CPropertySheet Dialog sich befindet muss ich von CPropertySheet Dialog irgendwie zugriff auf den CEdit auf CPropertyPage bekommen.
Warum Verwendest Du nicht die DDX Mechanismen mit UpdateData und DoDataExchange? Gibt es dafür einen Grund. Dies ist in meinen Augen der einfachste Weg, dann sorgt die MFC dafür.
Habe ich versucht, muss aber irgendwo ein fehler sein.
MyPropertySheet.cpp
BOOL CMyPropertySheet::OnCommand (WPARAM wParam, LPARAM lParam) { CPropertySheet::OnCommand(wParam, lParam); if (LOWORD(wParam) == IDOK) { CString s; m_ctrlInter.GetWindowText(s); TRACE0(s); } return FALSE; }Fehler kommt bei dem ASSERT(::IsWindow(m_hWnd));
wincore.cpp
void CWnd::GetWindowText(CString& rString) const { ASSERT(::IsWindow(m_hWnd)); ...
-
Was Du hier zeigst ist aber kein DDX.
Wenn Dein ASSERT an dieser Stelle kommt, dann ist Deiner m_ctrlInter Variable kein Control per Subclass zugeordnet.Warm das ganze jetzt auch noch in einem OnCommand Handler?