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


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




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

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

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

  CWinApp* pApp=AfxGetApp();
Итак, в этом классе есть функция WriteProfileString() эта функция запишет информацию в ini файл ассоциированный с приложением Имя_приложения.INI, вот смотрите код:
// Test.cpp : Defines the entry point for the application.
//

#include "stdafx.h"
#include "afxwin.h"

class CMyApp: public CWinApp
{
public:
	virtual BOOL InitInstance();
};

BOOL CMyApp::InitInstance()
{
	WriteProfileString("Setion 1","Section Intem","Probe");
	return TRUE;
}

CMyApp theApp;
Запустите его на выполнение. В результате в каталоге Windows появится файл с именем Test.INI примерно такого содержания.
[Setion 1]
Section Intem=Probe
Полное описание функции вот оно.
BOOL WriteProfileString
(
 LPCTSTR lpszSection, // секция
 LPCTSTR lpszEntry,   // ключ
 LPCTSTR lpszValue    // значение
);
Откуда MFC знает в какой именно INI файл нужно писать ??? Конечно MFC пользуется стандартной функцией Win 32 API, а в неё необходимо передавать имя файла. По этому поводу есть глобальная переменная m_pszProfileName, в которой и хранится имя этой переменной. Попробуйте такой код.
BOOL CMyApp::InitInstance()
{
	WriteProfileString("Setion 1","Section Intem","Probe");
	AfxMessageBox(m_pszProfileName);
	return TRUE;
}
Вопрос следующий: откуда берется эта переменная ? Где-то в грубине кода MFC скрыта такая строка
  lstrcat(szExeName, _T(".INI"))
Давайте посмотрим, что это такое.
BOOL CMyApp::InitInstance()
{
	WriteProfileString("Setion 1","Section Intem","Probe");
	AfxMessageBox(m_pszProfileName);
	AfxMessageBox(m_pszExeName);
	return TRUE;
}
Это имя нашего запускного файла. А его откуда взяли ??? Вот примерно такой код
        TCHAR szBuff[_MAX_PATH];
	VERIFY(::GetModuleFileName(m_hInstance, szBuff, _MAX_PATH));

	LPTSTR lpszExt = _tcsrchr(szBuff, '.');
	ASSERT(lpszExt != NULL);
	ASSERT(*lpszExt == '.');
	*lpszExt = 0;       // no suffix

	TCHAR szExeName[_MAX_PATH];
	TCHAR szTitle[256];
	// get the exe title from the full path name [no extension]
	VERIFY(AfxGetFileName(szBuff, szExeName, _MAX_PATH) == 0);
При желании можете и сами написать типа
BOOL CMyApp::InitInstance()
{
	WriteProfileString("Setion 1","Section Intem","Probe");
	AfxMessageBox(m_pszProfileName);
	AfxMessageBox(m_pszExeName);
	TCHAR szBuff[_MAX_PATH];
	VERIFY(::GetModuleFileName(m_hInstance, szBuff, _MAX_PATH));
	AfxMessageBox(szBuff);
	return TRUE;
}

Функция GetModuleFileName возврашает путь и имя запускного файла.


Загрузить проект | | |
Автор Каев Артем.
[AD]