Интерфейс IJournalReader
Предоставляет доступ на чтение к файлу журнала Windows, возвращая поток, содержащий XML-версию содержимого файла.
Примечание
Компонент "Читатель журнала" не может считывать файлы журнала Windows, созданные компьютерами под управлением Windows 7 или более поздней версии. Интерфейс IJournalReader следует считать устаревшим или устаревшим и не должен использоваться.
Элементы
Интерфейс IJournalReader наследуется от интерфейса IUnknown . IJournalReader также имеет следующие типы членов:
Методы
Интерфейс IJournalReader содержит следующие методы.
Метод | Описание |
---|---|
ReadFromStream | Принимает поток в файл заметки журнала и возвращает XML-поток, представляющий содержимое документа. |
Комментарии
Класс JournalReader позволяет загружать поток документов журнала и получать поток XML, представляющий содержимое. Вы можете воссоздать, отобразить рукописные фрагменты и управлять ими.
Примеры
Следующий пример обработчика для события Click кнопки создает экземпляр класса JournalReader и использует его для чтения существующего файла журнала.
Примечание
Метод DisplayXml , вызываемый из этого примера, не показан. Конкретная реализация такого метода зависит от потребностей приложения.
void CJntlReaderMFCDlg::OnBnClickedButton1()
{
static TCHAR BASED_CODE szFilter[] =
_T("Journal files (*.jnt)|*.jnt|All files (*.*)|*.*");
CFileDialog* fileDialog = new CFileDialog(TRUE, _T("*.jnt"), NULL,
OFN_FILEMUSTEXIST, szFilter, this);
// Get the filename from the user via a File Open dialog
if (fileDialog != NULL &&
fileDialog->DoModal() == IDOK)
{
CString strFileName = fileDialog->GetPathName();
// Read a JNT file into a memory buffer
HANDLE hFile = CreateFile(strFileName,
GENERIC_READ,
FILE_SHARE_READ,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
NULL);
if (hFile != INVALID_HANDLE_VALUE)
{
// Allocate memory to hold the file contents
DWORD dwFileSize = GetFileSize(hFile, NULL);
HGLOBAL hGlobal = GlobalAlloc(GHND, dwFileSize);
if (hGlobal != NULL)
{
LPBYTE pData = (LPBYTE)GlobalLock(hGlobal);
if (pData != NULL)
{
DWORD dwRead;
// Read the Journal file into the pData buffer
if (ReadFile(hFile, pData, dwFileSize, &dwRead, NULL) &&
(dwRead == dwFileSize))
{
HRESULT hr;
IStream* pJntStream;
// Create an IStream that points to the buffer
hr = CreateStreamOnHGlobal(hGlobal, FALSE, &pJntStream);
if (SUCCEEDED(hr))
{
IJournalReader* pJntReader;
// Create a JournalReader object
hr = CoCreateInstance(CLSID_JournalReader, NULL, CLSCTX_ALL,
IID_IJournalReader, (void**)&pJntReader);
if (SUCCEEDED(hr))
{
IStream* pXmlStream;
// Read in the JNT file via the JournalReader
hr = pJntReader->ReadFromStream(pJntStream, &pXmlStream);
if (SUCCEEDED(hr))
{
// Display results
DisplayXml(pXmlStream);
// Clean up
pXmlStream->Release();
}
pJntReader->Release();
}
pJntStream->Release();
}
}
GlobalUnlock(hGlobal);
}
GlobalFree(hGlobal);
}
CloseHandle(hFile);
}
delete fileDialog;
}
}
Требования
Требование | Значение |
---|---|
Минимальная версия клиента |
Windows XP Tablet PC Edition [только классические приложения] |
Минимальная версия сервера |
Ни одна версия не поддерживается |
Заголовок |
|
DLL |
|