Как сделать custom control?
От: Alexander_1983 Россия  
Дата: 11.09.02 06:30
Оценка:
Нужно сделать собственный элемент управления и использовать его в SDI приложении, для этого создаю класс элемента управления наследником от CWnd. Поделитесь кто-нибудь кодом для примера.
Re: Как сделать custom control?
От: Patalog Россия  
Дата: 11.09.02 07:02
Оценка:
Здравствуйте Alexander_1983, Вы писали:

A1>Нужно сделать собственный элемент управления и использовать его в SDI приложении, для этого создаю класс элемента управления наследником от CWnd. Поделитесь кто-нибудь кодом для примера.


//h
class CMyCoolControl : public CWnd
{
public:

    CMyCoolControl() { /* Конструктор */}

    //{{AFX_VIRTUAL(CMyCoolControl)
    public:
    virtual BOOL Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext = NULL);

    protected:
    virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
    //}}AFX_VIRTUAL

    //{{AFX_MSG(CMyCoolControl)
    afx_msg BOOL OnEraseBkgnd(CDC* pDC);
    afx_msg void OnPaint();
    //}}AFX_MSG

    DECLARE_MESSAGE_MAP()
};

//cpp
BEGIN_MESSAGE_MAP(CMyCoolControl, CWnd)
    //{{AFX_MSG_MAP(CMyCoolControl)
    ON_WM_ERASEBKGND()
    ON_WM_PAINT()
    //}}AFX_MSG_MAP
END_MESSAGE_MAP()

BOOL CMyCoolControl::Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext) 
{
    return CWnd::Create(lpszClassName, NULL, dwStyle, rect, pParentWnd, nID);
}

BOOL CMyCoolControl::OnEraseBkgnd(CDC* pDC) 
{
    CRect rc; GetClientRect(&rc);
    /* Do something */
    return TRUE;
}

BOOL CMyCoolControl::PreCreateWindow(CREATESTRUCT& cs) 
{
    cs.lpszClass = AfxRegisterWndClass(CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS, NULL, NULL, NULL);    
    return CWnd::PreCreateWindow(cs);
}

void CMyCoolControl::OnPaint() 
{
    CPaintDC dc(this); // device context for painting
    /* Do something */
}


Пойдет?
Почетный кавалер ордена Совка.
Re: Как сделать custom control?
От: Osco Португалия http://progs.biz
Дата: 11.09.02 08:19
Оценка:
Здравствуйте Alexander_1983, Вы писали:

A1>Нужно сделать собственный элемент управления и использовать его в SDI приложении, для этого создаю класс элемента управления наследником от CWnd. Поделитесь кто-нибудь кодом для примера.


Вот пара ссылок :
1. создание с помощью библиотеки MFC (16 уроков):
http://progs.biz/vc/activex/activex01.shtml

2. создание с помощью библиотеки ATL (11 уроков):
http://progs.biz/vc/atl/atl01.shtml
Osco do Casco
Re: Как сделать custom control?
От: Alexander_1983 Россия  
Дата: 11.09.02 09:00
Оценка:
Допустим, что класс для контрола готов, но как его вставить в приложение?
Я размещаю на форме User Control и в окошке свойства указываю как класс контрола свой класс, компилирую, запускаю: происходит ошибка "can't create empty document". Как с этим бороться?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.