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 руб./мес


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




 127 - Дальше CWinApp / MFC шаг за шагом / Visual C++

Шаг 127 - Дальше CWinApp

Итак, в прошлом шаге мы с Вами считали данные из ресурсов. Как же MFC их находит. Создаем кнопку и код к ней.

void CTestAppDlg::OnButton5() 
{
HINSTANCE hInst;
hInst = AfxGetResourceHandle();
	if (hInst !=0)
	{
		if (FindResource(hInst,MAKEINTRESOURCE(IDC_CURSOR1),
			 RT_GROUP_CURSOR)!=NULL) 
		{
			AfxMessageBox("Yes");
		};
	};
};
Есть функция AfxGetResourceHandle(), которая возвращает указатель на ресурсы. Дальше используется функция FindResource() для поиска нужного ресурса. Для этого передается указатель на ресурсы, строка имени ресурса, если у нас строка числовая, то необходимо применить макрос MAKEINTRESOURCE, который переведет числовое значение в строковое. Кроме того необходимо указать группу ресурсов.

При запуске приложения MFC помещает в переменную afxCurrentResourceHandle указатель на ресурсы. Хотите посмотреть интересный ход. Вот измененый код кнопки.

void CTestAppDlg::OnButton5() 
{
HINSTANCE hInst;
........
afxCurrentResourceHandle=NULL;
}
После нажатия на кнопку всякое ображение к функциям использующим ресурсы приведет к аварийной остановке программы. Это круто !!! Мне кажется, что данная переменная должна быть защищена от изменения, так как неосторожное обращение с ней может привести к катастрофе приложения. Интересно это тоже так задумано ???? :-))) Сама переменная спрятана за макроподстановкой.
#define afxCurrentResourceHandle    AfxGetModuleState()->m_hCurrentResourceHandle
Поэтому код можно поменять на следующий. Эффект тот же.
void CTestAppDlg::OnButton5() 
{
........
//afxCurrentResourceHandle=NULL;
AfxGetModuleState()->m_hCurrentResourceHandle=NULL;
}

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