次の方法で共有


IJournalReader インターフェイス

Windows ジャーナル ファイルへの読み取りアクセスを提供し、ファイルの内容の XML バージョンを含むストリームを返します。

Note

ジャーナル リーダー コンポーネントは、Windows 7 以降を実行しているマシンによって作成された Windows ジャーナル ファイルを読み取ることができません。 IJournalReader インターフェイスは、非推奨または廃止されたものと見なす必要があり、使用しないでください。

メンバー

IJournalReader インターフェイスは、IUnknown インターフェイスから継承されます。 IJournalReader には、次の種類のメンバーもあります。

メソッド

IJournalReader インターフェイスには、これらのメソッドがあります。

メソッド 説明
ReadFromStream ジャーナル ノート ファイルへのストリームを取得し、ドキュメントの内容を表す XML ストリームを返します。

解説

JournalReader クラスを使用すると、Journal ドキュメント ストリームを読み込み、コンテンツを表す XML ストリームを受信できます。 インクの再構成、表示、操作を行うことができます。

ボタンの Click イベントのハンドラーの次の例では、 JournalReader クラスのインスタンスを作成し、それを使用して既存の Journal ファイルを読み取ります。

Note

この例から呼び出された 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 タブレット PC エディション [デスクトップ アプリのみ]
サポートされている最小のサーバー
サポートなし
ヘッダー
Journal.h (journal_i.c も必要)
[DLL]
Journal.dll

関連項目

カスタム プロパティ GUID

ReadFromStream メソッド