Bagikan melalui


Antarmuka IJournalReader

Menyediakan akses baca ke file Jurnal Windows, mengembalikan aliran yang berisi versi XML konten file.

Catatan

Komponen Pembaca Jurnal tidak dapat membaca file Windows Journal yang dibuat oleh komputer yang menjalankan Windows 7 atau yang lebih baru. Antarmuka IJournalReader harus dianggap tidak digunakan lagi atau usang dan tidak boleh digunakan.

Anggota

Antarmuka IJournalReader mewarisi dari antarmuka IUnknown . IJournalReader juga memiliki jenis anggota berikut:

Metode

Antarmuka IJournalReader memiliki metode ini.

Metode Deskripsi
ReadFromStream Mengambil aliran ke file Catatan Jurnal dan mengembalikan aliran XML yang mewakili konten dokumen.

Keterangan

Kelas JournalReader memungkinkan Anda memuat aliran dokumen Jurnal dan menerima aliran XML yang mewakili konten. Anda dapat menyusun ulang, menampilkan, dan memanipulasi tinta.

Contoh

Contoh handler berikut untuk peristiwa Klik tombol membuat instans kelas JournalReader dan menggunakannya untuk membaca file Jurnal yang ada.

Catatan

Metode DisplayXml yang dipanggil dari contoh ini tidak ditampilkan. Implementasi spesifik dari metode tersebut tergantung pada kebutuhan aplikasi Anda.

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;
  }
}

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung
Windows XP Tablet PC Edition [hanya aplikasi desktop]
Server minimum yang didukung
Tidak ada yang didukung
Header
Journal.h (juga memerlukan journal_i.c)
DLL
Journal.dll

Lihat juga

GUID Properti Kustom

Metode ReadFromStream