проблема с ComboBox
От: valuea  
Дата: 23.11.04 15:42
Оценка:
Есть такой класс


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 ...

Подкажите в чем тут дело и как это исправить?
Заранее спасибо.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.