C++ C++ C# C# ASP.NET Security ASP.NET Security ASM ASM Скачать Скачать Поиск Поиск Хостинг Хостинг  
  Программа для работы с LPT портом...
Язык: .NET — ©Alexey...
  "ASP.NET Atlas" – AJAX в исполнении Micro...
Язык: .NET — ©legigor@mail.ru...
  "Невытесняющая" Многопоточность...
Язык: C/C++ — ©...
  01.05.2010 — Update World C++: Сборник GPL QT исходников
  15.12.2007 — Весь сайт целиком можно загрузить по ссылкам из раздела Скачать
Хостинг:
Windows 2003, ASP.NET 2.0
бесплатный и от 80 руб./мес


   Отправить письмо
Кулабухов Артем, Беларусь




 325 - Макрос AFX_MANAGE_STATE / MFC шаг за шагом / Visual C++

Шаг 325 - Макрос AFX_MANAGE_STATE

Этот макрос управляет состоянием модуля. Под состоянием модуля понимается информация о приложении. В это состояние входят дескрипторы окон, таблицы связей MFC объектов и так далее.

AFX_MANAGE_STATE( AFX_MODULE_STATE* pModuleState )

При выполнении обычного модуля есть только одна таблица состояния:

325_1.gif (890 b)

Я не зря написал MFC модуль, это может быть как MFC EXE, так и MFC DLL. У каждого модуля своя таблица состояния. Раз так, то при выполнении другого модуля, который использует MFC, например, DLL, которая использует MFC или объектов OLE нужно переключаться на таблицу состояния этого модуля. Именно это и делает данный макрос.

325_2.gif (3722 b)

Если такое переключение не выполнять, то результат работы может быть любой. К счастью в большинстве случаев AppWizard это умеет делать. Посмотрите, например, на функцию DllRegisterServer():

/////////////////////////////////////////////////////////
// DllRegisterServer - Adds entries to the system registry

STDAPI DllRegisterServer(void)
{
	AFX_MANAGE_STATE(_afxModuleAddrThis);
	if (!AfxOleRegisterTypeLib(AfxGetInstanceHandle(), _tlid))
		return ResultFromScode(SELFREG_E_TYPELIB);

	if (!COleObjectFactoryEx::UpdateRegistryAll(TRUE))
		return ResultFromScode(SELFREG_E_CLASS);

	return NOERROR;
}

| |
Автор Каев Артем.
[AD]