Есть такой класс
template< class T, class TBase = CComboBox, class TWinTraits = CControlWinTraits >
class ATL_NO_VTABLE CMyComboBoxImpl :
public CWindowImpl< T, TBase, TWinTraits >
{
public:
DECLARE_WND_SUPERCLASS(NULL, TBase::GetWndClassName())
CContainedWindowT<CEdit> m_ctrlEdit;
CMyComboBoxImpl() : m_ctrlEdit(this, 1) {}
BOOL SubclassWindow(HWND hWnd)
{
ATLASSERT(m_hWnd==NULL);
ATLASSERT(::IsWindow(hWnd));
BOOL bRet = CWindowImpl< T, TBase, TWinTraits >::SubclassWindow(hWnd);
if( bRet ) _Init();
return bRet;
}
void _Init()
{
ATLASSERT(::IsWindow(m_hWnd));
if( GetWindow(GW_CHILD) ) m_ctrlEdit.SubclassWindow(GetWindow(GW_CHILD));
}
BEGIN_MSG_MAP(CMyComboBoxImpl)
MESSAGE_HANDLER(WM_CREATE, OnCreate)
END_MSG_MAP()
LRESULT OnCreate(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& /*bHandled*/)
{
LRESULT lRes = DefWindowProc(uMsg, wParam, lParam);
_Init();
return lRes;
}
};
class CMyComboBoxCtrl : public CMyComboBoxImpl<CMyComboBoxCtrl>
{
public:
DECLARE_WND_SUPERCLASS(_T("MyComboBox"), GetWndClassName())
};
при вызове m_ctrlEdit.SubclassWindow(GetWindow(GW_CHILD));
вываливается с ошибкой Module has encountered a problem and ...
Подкажите в чем тут дело и как это исправить?
Заранее спасибо.