templated class

V

Vincent RICHOMME

Hi,

I would need some help to write a templated function or method.
I am developping a GUI and on one plateform I am using a listbox
(CListBox) while on the other it's a combobox(CCombobox).
Both controls derived from a the same base class CWnd like this :

class CComboBox : public CWnd
{
....
int AddString(LPCTSTR lpszString);
}

class CListBox : public CWnd
{
....
int AddString(LPCTSTR lpszItem);
}


in my dialog I would like to write a method that take a CComboBox or a
CListBox and call the AddString method.



class CMyDialog : public CDialog
{
// take a CListBox or CCombobox
template<typename TList>
int AddListEntry(Tlist& List, LPCTSTR tszText, DWORD dwItemData);


void OnInitDialog()
{
AddListEntry(m_ListCtl, "eze", 0);
}



#ifdef PLATFORM1
CCombobox m_ListCtl;
#else
CListBox m_ListCtl;
#endif
};





How can I do that ?
 
?

=?ISO-8859-1?Q?Erik_Wikstr=F6m?=

Hi,

I would need some help to write a templated function or method.
I am developping a GUI and on one plateform I am using a listbox
(CListBox) while on the other it's a combobox(CCombobox).
Both controls derived from a the same base class CWnd like this :

class CComboBox : public CWnd
{
...
int AddString(LPCTSTR lpszString);
}

class CListBox : public CWnd
{
...
int AddString(LPCTSTR lpszItem);
}


in my dialog I would like to write a method that take a CComboBox or a
CListBox and call the AddString method.



class CMyDialog : public CDialog
{
// take a CListBox or CCombobox
template<typename TList>
int AddListEntry(Tlist& List, LPCTSTR tszText, DWORD dwItemData);


void OnInitDialog()
{
AddListEntry(m_ListCtl, "eze", 0);
}



#ifdef PLATFORM1
CCombobox m_ListCtl;
#else
CListBox m_ListCtl;
#endif
};

You shouldn't need any macros to do this, (though I think you can use
macros and skip the templates). What you have above looks good to me,
just implement the AddListEntry() method and you should be good to go:

template<typename TList>
int CMyDialog::AddListEntry(TList& List, LPCTSTR tszText, DWORD dwItemData)
{
List.addString(tszText);
// ...
}
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,773
Messages
2,569,594
Members
45,119
Latest member
IrmaNorcro
Top