In my case Class A is only used/manipulated by class B.
I don't need any functions in class A, because it's all done by class B.
So I decide not to inherit from A.
Laserlight said it: A TabWindow is not a TabItem, even class B can't live without A and A can't without B.
Here's my current header file ...
(Please, don't judge too hard, I'm still on a learning curve in C/C++)
Code:
struct TAB_ITEM {
unsigned itemID;
LPCTSTR itemText;
int itemImage;
RECT itemRect;
};
/*
* Die Fensterklasse
*/
class TabCtrl {
public:
TabCtrl ();
TabCtrl (HWND hwnd); // Parent-Fenster als Argument
~TabCtrl ();
HWND CreateTabWindow (HINSTANCE hInst, HWND hParent, int X, int Y, int Width, int Height);
bool InsertTabItem (HWND hwnd, unsigned numID);
bool DeleteTabItem (HWND hwnd, unsigned numID);
bool SetTabCurSelItem (HWND hwnd, unsigned index);
static LRESULT CALLBACK TabWndProc (HWND hwnd, unsigned msg, WPARAM wParam, LPARAM lParam);
LRESULT TabMsgProc (unsigned msg, WPARAM wParam, LPARAM lParam);
private:
HWND tabWnd; // Handle - Tabfenster
HWND tabWndParent; // Handle - Parentfenster
LPCTSTR tabClassName; // Name der Fensterklasse
TAB_ITEM* tabItems; // Zeiger auf ein Array mit TabItems
unsigned tabNumItems; // Anzahl der TabItems
unsigned tabItemFirstVisible; // Erstes sichtbare TabItem
unsigned tabItemLastVisible; // Letztes sichtbare TabItem
unsigned tabItemMinWidth; // Minimale Breite der TabItems
unsigned tabItemHPadding; // "Polster" zwischen Text und Icon (horizontal)
unsigned tabCurSelItem; // Aktuell gewähltes TabItem
RECT tabBarBtn; // TabBar-Button
bool RegisterTabClass (HINSTANCE hInstance);
bool SetTabItem (unsigned index);
bool ResetTabItems ();
bool UpdateTabItems ();
};
Greetz