Шаг 94 - CWnd::CreateControl

BOOL CWnd::CreateControl(
	LPCTSTR lpszClass, LPCTSTR lpszWindowName, 
	DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, 
	UINT nID, CFile* pPersist = NULL, BOOL bStorage = FALSE, 
	BSTR bstrLicKey = NULL 
);
BOOL CWnd::CreateControl(
	REFCLSID clsid, LPCTSTR lpszWindowName, 
	DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, 
	UINT nID, CFile* pPersist = NULL, BOOL bStorage = FALSE, 
	BSTR bstrLicKey = NULL
);

Возвращаемое значение
Отличное от нуля, если успешно, иначе 0.

lpszClass
Эта строка может содержать OLE "короткое имя" (ProgID) для класса например "CIRC3.Circ3ctrl.1". Имя должно соответствовать тому же самому имени, зарегистрированному управлением. В качестве альтернативы, строка может содержать строковую форму CLSID, содержащегося в фигурных скобках например . "{9DBAFCCF-592F-101B-85CE-00608CEC297B}". В любом случае, CreateControl преобразовывает строку в соответствующий класс ID.

lpszWindowName
Указатель на текст, который нужно отобразить в управлении. Устанавливает значение Caption или Теxt свойства. Если NULL, Caption или Text свойства не изменяються.

dwStyle
Стили Windows.

rect
Определяет размер управления и позицию. Это может быть или объект CRect или структура RECT.

pParentWnd
Определяет родительское окно управления. Это не должно быть NULL

nID
Определяет ID управления.

pPersist
Указатель на CFile, содержащий постоянное состояние для управления. Значение по умолчанию NULL, указывая, что управление инициализирует себя без того, чтобы восстановить состояние из любой постоянной памяти. Если не NULL, он должен быть было указателем на объект CFile-унаследованный, который содержит постоянные данные управления, в форме или потоке или памяти. Эти данные могли бы быть сохранены в предыдущей активации клиента. CFile может содержать другие данные, но должен иметь набор указателей чтений -записи с первого байта постоянных данных во время обращения к CreateControl.

bStorage
Указывает, должны ли данные в pPersist интерпретироваться как ISTORAGE или ISTREAM данные. Если данные в pPersist - хранилище, bStorage должен быть TRUE. Если данные в pPersist - поток, bStorage должен быть FALSE. Значение по умолчанию FALSE.

bstrLicKey
Данные ключа лицензии. Эти данные необходимы только для создания средств управления, которые требуют ключ лицензии во время выполнения. Если управление поддерживает патентование, Вы должны обеспечить ключ лицензии для создания управления, чтобы преуспеть. Значение по умолчанию NULL.

clsid
Уникальный класс ID управления.

Замечания
Используйте этот метод, чтобы создать управление ActiveX, которое будет представляться в программе MFC объектом CWnd. CreateControl - прямой аналог CWnd::Create, которая создает окно для CWnd. CreateControl создает управление ActiveX вместо обычного окна.

Только следующее подмножество Windows dwStyle флажков обеспечивается для CreateControl:

Пример

// Этот код сгенерирован Control Wizard. 
// Это переносит вызов CreateControl в вызов Create.
class CGenocx : public CWnd
{
protected:
	DECLARE_DYNCREATE(CGenocx)
public:
	CLSID const& GetClsid()
	{
		static CLSID const clsid
			= { 0x8a6bbfeb, 0xf9bb, 0x11d1, { 0xb9, 0xc9, 0x0, 
			0x60, 0x8, 0x93, 0xb0, 0xfe } };
		return clsid;
	}
	virtual BOOL Create(LPCTSTR lpszClassName,
		LPCTSTR lpszWindowName, DWORD dwStyle,
		const RECT& rect,
		CWnd* pParentWnd, UINT nID,
		CCreateContext* pContext = NULL)
	{
		return CreateControl(GetClsid(), lpszWindowName, 
			dwStyle, rect, pParentWnd, nID); 
	}
	......
};

Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем - 22.12.2001