CDialogBar - Zugriff und Co

EriFo

Erfahrenes Mitglied
Hiho - ich hab in meinen Dialog ein "CReBarCtrl" erstellt und und füge dann 2 Bänder vom Typ "CToolBar" und eins vom Typ "CDialogBar" ein.

Für die DialogBar hab ich ein Template mit hilfe des Resourcen-Editors erstellt.
Das klappt auch alles soweit ganz gut - nun frag ich mich aber, wie ich auf die Steuerelemente des CDialogBar-Objektes zugreifen kann. (Und auf Buttons reagieren und so)

Das Teil iss ja nun kein Kind von CDialog - hat also gewisse sachen nicht - dazu geister hier auch irgend ein Link von Endurion zu einem Tutorial rum - hab ich mir durchgelesen und nachgemacht - klappt aber nicht - weil der Compiler die IDC's der Steuerlelemente net findet (wie soll er auch wissen wo er zu suchen hat da die Klassse ja per hand erstellt ist).


Hat da jemand Ahnug von und könnt mir helfen ? ^_______^
Können auch selbstverständlich alternative Wege sein ^__^


M.f.G.Erik
 
Zuletzt bearbeitet:
Hi,
leider schreibst du nicht, wie du die Bars erstellt hast. Dazu müßtest du doch jeweils ein Datenelement vom Typ CToolBar bzw. CDialogBar und CReBar erstellt haben. Etwa so wie es in der MainFrm.h für ein Fenster deklariert wird.
Code:
	CToolBar    m_wndToolBar;
	CReBar      m_wndReBar;
	CDialogBar      m_wndDlgBar;
In der MainFrm.cpp werden dann die Bars erstellt.
Code:
	if (!m_wndToolBar.CreateEx(this) ||
		!m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
	{
		TRACE0("Symbolleiste konnte nicht erstellt werden\n");
		return -1;      // Fehler bei Erstellung
	}
	if (!m_wndDlgBar.Create(this, IDR_MAINFRAME, 
		CBRS_ALIGN_TOP, AFX_IDW_DIALOGBAR))
	{
		TRACE0("Dialogleiste konnte nicht erstellt werden\n");
		return -1;		// Fehler bei Erstellung
	}

	if (!m_wndReBar.Create(this) ||
		!m_wndReBar.AddBar(&m_wndToolBar) ||
		!m_wndReBar.AddBar(&m_wndDlgBar))
	{
		TRACE0("Infoleiste konnte nicht erstellt werden\n");
		return -1;      // Fehler bei Erstellung
	}
Dann kann man über die Datenelemente m_wnd...... auf die Elemente zugreifen.
Beispielsweise wenn in der InfoLeiste eine ComboBox untergebracht ist
Code:
CComboBox *pBox=(CComboBox*)m_wndDlgBar.GetDlgItem(IDC_MY_COMBO);
So etwa müßte das auch bei dir gehen. Wenn nicht, poste doch mal den Code, wie du die Elemente erstellt hast.

Mfg

langer
 
Zuletzt bearbeitet:
also erste Asche auf mein Haupt - hab ganz verghessen mal den Linkt zu dem Tutorial zu posten, dammit man sich das auch ma anschaun kann.

http://www.codeguru.com/Cpp/W-D/dislog/ddxddv/article.php/c1997/
(im Original gepostet von Endurion - will mich ja hier net mit fremen Federn Schmücken -_-)

Das sind die Definitionen.

Code:
CReBarCtrl m_rebar;
CToolBar m_toolbar;
CToolBar m_toolbar2;
CInitDialogBar m_dlgbar;

Die ReBar muss ein Control sein, da ich nur einen Dialog habe und kein MDI oder SDI Frame. CInitDialogBar ist eine Ableitung von CDialogBar. Das ist die besagte Klasse die ich versucht habe dem Tutorial nachzubauen.

Code:
//--- Toolbar erzeugen ---
if(!m_toolbar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_ALIGN_ANY | CBRS_FLOATING |/*CBRS_TOP |/* CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY |*/ CBRS_SIZE_DYNAMIC))
{
   TRACE0("Fehler beim Erstellen der Toolbar #1");
   return-1;
}
//--- Zugriff bekommen und Buttons hinzufügen ---
CToolBarCtrl *toolbar =&(m_toolbar.GetToolBarCtrl());
toolbar->SetExtendedStyle(TBSTYLE_EX_DRAWDDARROWS);
 

//--- Toolbar erzeugen ---
if(!m_toolbar2.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_ALIGN_ANY |/*CBRS_TOP |/* CBRS_GRIPPER |*/ CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC))
{
   TRACE0("Fehler beim Erstellen der ToolBar #2");
   return-1;
}
m_toolbar2.LoadToolBar( IDR_TOOLBAR );
 

//--- Dialogbar erzeugen ---
if(!m_dlgbar.Create(this, IDD_SEARCH_DIALOG, CBRS_SIZE_FIXED |/*CBRS_TOP |*/ CBRS_TOOLTIPS /*|CBRS_FLYBY*/, IDD_SEARCH_DIALOG))
{
   TRACE0("Fehler beim Erstellen der DialogBar");
   return-1;
}

So erstelle ich die Dinger. Der Toolbar füge ich anschliessend noch die Buttons hinzu (zeig ich jetzt nicht - zu lang und nicht von Bedeutung)

Das mit dem GetDlgItem werd ich mal ausprobieren. ^_^°


M.f.G. Erik
 
Zurück