Tabs, Dialoge und Zugriff auf die Werte
-
Hi
Ich habe eine Klasse CMyTabCtrl welche von CTabCtrl abgeleitet ist und die dazugehörigen Dialog, beim click auf dem Tab, ladet. Das funktioniert wunderbar.
Mein Problem ist das ich kein Zugriff auf die Werte der geladenen Dialog bekomme. Obwohl zu jedem Dialog eine Klasse erstellt ist. Ich möchte zum Beispiel von einem Edit Feld einfach denn eingegebenen String holen, der ist jedoch immer leer. So bin ich vorgegangen
Hauptdialog Headerdatei: Erstelle Objekt von abgleitete Klasse
... CMyTabCtrl m_IDCTabConfig; ...
Hauptdialog cpp Datei: Erstelle Tabs und Initialisiere die Dialoge zu den Tabs. Siehe Unten abgeleitete Klasse
BOOL CConfigDlg::OnInitDialog() { CDialog::OnInitDialog(); m_IDCTabConfig.InsertItem(0,_T("Pfade")); m_IDCTabConfig.Init(); return TRUE; // return TRUE unless you set the focus to a control }
Inder folgenden Funktion versuche ich auf ein Editfeld zuzugreifen.Ich erstelle eine neues Objekt von dem TabDialog und versuche darüber auf denn String im Editfeld zuzugreifen. Ist jedoch immer leer
void CConfigDlg::OnBnClickedButtonSaveToIni() { CString path; CConfigTabPath TabPath; //Dialog welcher angezeigt wird wenn auf denn Tab geklickt wird TabPath.GetDlgItemText(IDC_EDIT_PICTURE_PATH,path); }
Wie kann ich auch denn String vom Steuerelement zugreifen ?
Abgeleitet MyTabCtrl Klasse falls ihr sie braucht um zu verstehen was ich gemacht hab
CMyTabCtrl::CMyTabCtrl() { //dont forget to increase array index x of m_TabPage[x] in header file m_TabPage[0] = new CConfigTabPath; m_PageNumber = 1; } CMyTabCtrl::~CMyTabCtrl() { for(int i=0; i < m_PageNumber; i++) { delete m_TabPage[i]; }//end for } BEGIN_MESSAGE_MAP(CMyTabCtrl, CTabCtrl) ON_WM_LBUTTONDOWN() END_MESSAGE_MAP() // CMyTabCtrl-Meldungshandler void CMyTabCtrl::Init() { m_CurrentPage=0; //init dialog to tab m_TabPage[0]->Create(IDD_CONFIG_TAB_PATH, this); //show first tab, hide the rest m_TabPage[0]->ShowWindow(SW_SHOW); SetRec(); } void CMyTabCtrl::SetRec() { CRect tabRec, itemRec; int nX, nY, nXz, nYz; GetClientRect(&tabRec); GetItemRect(0, &itemRec); nX=itemRec.left; nY=itemRec.bottom+1; nXz=tabRec.right-itemRec.left-1; nYz=tabRec.bottom-nY-1; m_TabPage[0]->SetWindowPos(&wndTop, nX, nY, nXz, nYz, SWP_SHOWWINDOW); for(int i=1; i < m_PageNumber; i++) { m_TabPage[i]->SetWindowPos(&wndTop, nX, nY, nXz, nYz, SWP_HIDEWINDOW); }//end for } void CMyTabCtrl::OnLButtonDown(UINT nFlags, CPoint point) { CTabCtrl::OnLButtonDown(nFlags, point); if(m_CurrentPage != GetCurFocus()) { m_TabPage[m_CurrentPage]->ShowWindow(SW_HIDE); m_CurrentPage=GetCurFocus(); m_TabPage[m_CurrentPage]->ShowWindow(SW_SHOW); m_TabPage[m_CurrentPage]->SetFocus(); }//end if }
-
hat sich erledigt
vielen dank..für lesen.. Villeicht hilft es jemand anderen ??
hier ide lösung
( (CConfigTabPath*)m_IDCTabConfig.m_TabPage[0] )->GetDlgItemText(IDC_EDIT_PICTURE_PATH,path);