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
Hauptdialog cpp Datei: Erstelle Tabs und Initialisiere die Dialoge zu den Tabs. Siehe Unten abgeleitete Klasse
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
Wie kann ich auch denn String vom Steuerelement zugreifen ?
Abgeleitet MyTabCtrl Klasse falls ihr sie braucht um zu verstehen was ich gemacht hab
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
Code:
...
CMyTabCtrl m_IDCTabConfig;
...
Hauptdialog cpp Datei: Erstelle Tabs und Initialisiere die Dialoge zu den Tabs. Siehe Unten abgeleitete Klasse
Code:
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
Code:
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
Code:
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
}
Zuletzt bearbeitet: