Поделиться через


Интерфейс 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 [только классические приложения]
Минимальная версия сервера
Ни одна версия не поддерживается
Заголовок
Journal.h (также требуется journal_i.c)
DLL
Journal.dll

См. также раздел

Пользовательские идентификаторы GUID свойств

Метод ReadFromStream