Нужно сделать собственный элемент управления и использовать его в SDI приложении, для этого создаю класс элемента управления наследником от CWnd. Поделитесь кто-нибудь кодом для примера.
Здравствуйте 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 */
}
Пойдет?
Здравствуйте 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