Ярлыки

вторник, 29 июня 2010 г.

MFC: создание собственного визуального класса

наследуемого от стандартного класса.
1.создаем класс
2.указываем базовый класс
class CModelListFiles : public CListCtrl

Для использования из вызывающего класса нам нужно получить указатель на родительский класс. Для этого:
1.перегружаем метод Create где в третьем параметре получаем указатель на родителя
BOOL CModelListFiles::Create(DWORD dwStyle, const RECT &rect, CModelDlg *pParent, UINT nID)
{
if(!CListCtrl::Create(dwStyle,rect,pParent,nID)) return FALSE; //вызов метода базового класса
m_parent=pParent; //окно-родитель
return TRUE;
}
2.в хэдэре перед определением нашего класса обьявляем вызывающий класс
class CModelDlg;
3.в определении нашего класса создаем указатель на родителя
CModelDlg *m_parent;
4.включаем #include "ModelDlg.h"
в cpp нашего класса

ModelListFiles.h - визуальный класс наследуемый от CListCrtl
#if !defined(AFX_MODELLISTFILES_H__DEB17F5E_9013_49CA_8947_CCEBC974EF4F__INCLUDED_)
#define AFX_MODELLISTFILES_H__DEB17F5E_9013_49CA_8947_CCEBC974EF4F__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

class CModelDlg;

class CModelListFiles : public CListCtrl
{
public:
CModelDlg *m_parent;
CModelListFiles();
virtual ~CModelListFiles();

private:
BOOL Create(DWORD dwStyle,const RECT& rect,CModelDlg *pParent,UINT nID);
};

#endif // !defined(AFX_MODELLISTFILES_H__DEB17F5E_9013_49CA_8947_CCEBC974EF4F__INCLUDED_)

ModelListFiles.cpp
#include "stdafx.h"
#include "ModelListFiles.h"
#include "ModelDlg.h"

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CModelListFiles::CModelListFiles()
{

}

CModelListFiles::~CModelListFiles()
{

}

BOOL CModelListFiles::Create(DWORD dwStyle, const RECT &rect, CModelDlg *pParent, UINT nID)
{
if(!CListCtrl::Create(dwStyle,rect,pParent,nID)) return FALSE; // Âûçîâ ìåòîäà áàçîâîãî êëàññà
m_parent=pParent; // îêíî-ðîäèòåëü
return TRUE;
}
ModelDlg.h
#if !defined(AFX_MODELDLG_H__D27F3632_A29D_4E97_B85B_F672DFCD102C__INCLUDED_)
#define AFX_MODELDLG_H__D27F3632_A29D_4E97_B85B_F672DFCD102C__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// ModelDlg.h : header file
//
#include "CustFilesEdit.h"


/////////////////////////////////////////////////////////////////////////////
// CModelDlg dialog

class CModelDlg : public CDialog
{
// Construction
public:
CModelDlg(CWnd* pParent = NULL); // standard constructor

};

//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_MODELDLG_H__D27F3632_A29D_4E97_B85B_F672DFCD102C__INCLUDED_)

ModelDlg.cpp
#include "stdafx.h"
#include "ModelDlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CModelDlg dialog


CModelDlg::CModelDlg(CWnd* pParent /*=NULL*/)
: CDialog(CModelDlg::IDD, pParent),
m_CustFilesBox(this)
{
//{{AFX_DATA_INIT(CModelDlg)
m_NoEdit = FALSE;
//}}AFX_DATA_INIT
}

Комментариев нет:

Отправить комментарий