Share via


Windows Runtime C++ Template Library (WRL)

Windows Runtime C++ Template Library (WRL) adalah pustaka templat yang menyediakan cara tingkat rendah untuk menulis dan menggunakan komponen Windows Runtime.

Catatan

WRL sekarang digantikan oleh C++/WinRT, proyeksi bahasa C++17 standar untuk API Windows Runtime. C++/WinRT tersedia di Windows SDK dari versi 1803 (10.0.17134.0) dan seterusnya. C++/WinRT diimplementasikan sepenuhnya dalam file header, dan dirancang untuk memberi Anda akses kelas satu ke WINDOWS API modern.

Dengan C++/WinRT, Anda dapat menggunakan dan menulis WINDOWS Runtime API menggunakan pengkompilasi C++17 yang sesuai standar. C++/WinRT biasanya berkinerja lebih baik dan menghasilkan biner yang lebih kecil daripada opsi bahasa lain untuk Windows Runtime. Kami akan terus mendukung C++/CX dan WRL, tetapi sangat menyarankan agar aplikasi baru menggunakan C++/WinRT. Untuk informasi selengkapnya, lihat C++/WinRT.

Keuntungan

Pustaka Templat Windows Runtime C++ memungkinkan Anda untuk lebih mudah menerapkan dan menggunakan komponen Model Objek Komponen (COM). Ini menyediakan teknik housekeeping seperti penghitungan referensi untuk mengelola masa pakai objek dan menguji nilai HRESULT untuk menentukan apakah operasi berhasil atau gagal. Agar berhasil menggunakan Pustaka Templat Windows Runtime C++, Anda harus mengikuti aturan dan teknik ini dengan hati-hati.

C++/CX adalah cara berbasis bahasa tingkat tinggi untuk menggunakan komponen Windows Runtime. Pustaka Templat C++ Windows Runtime dan C++/CX menyederhanakan penulisan kode untuk Windows Runtime dengan melakukan tugas housekeeping secara otomatis atas nama Anda.

Pustaka Templat Windows Runtime C++ dan C++/CX memberikan manfaat yang berbeda. Berikut adalah beberapa alasan Anda mungkin ingin menggunakan Pustaka Templat C++ Runtime Windows alih-alih C++/CX:

  • Windows Runtime C++ Template Library menambahkan sedikit abstraksi melalui Windows Runtime Application Binary Interface (ABI), memberi Anda kemampuan untuk mengontrol kode yang mendasarinya untuk membuat atau menggunakan WINDOWS Runtime API dengan lebih baik.

  • C++/CX mewakili nilai COM HRESULT sebagai pengecualian. Jika Anda telah mewarisi basis kode yang menggunakan COM, atau yang tidak menggunakan pengecualian, Anda mungkin menemukan bahwa Pustaka Templat Windows Runtime C++ adalah cara yang lebih alami untuk bekerja dengan Windows Runtime karena Anda tidak perlu menggunakan pengecualian.

    Catatan

    Pustaka Templat Windows Runtime C++ menggunakan nilai HRESULT dan tidak melemparkan pengecualian. Selain itu, Pustaka Templat Windows Runtime C++ menggunakan penunjuk cerdas dan pola RAII untuk membantu menjamin bahwa objek dihancurkan dengan benar ketika kode aplikasi Anda melemparkan pengecualian. Untuk informasi selengkapnya tentang penunjuk cerdas dan RAII, lihat Smart Pointers dan Objects Own Resources (RAII).

  • Tujuan dan desain Pustaka Templat C++ Runtime Windows terinspirasi oleh Pustaka Templat Aktif (ATL), yang merupakan sekumpulan kelas C++ berbasis templat yang menyederhanakan pemrograman objek COM. Karena Windows Runtime C++ Template Library menggunakan C++ standar untuk membungkus Windows Runtime, Anda dapat dengan lebih mudah mem-port dan berinteraksi dengan banyak komponen COM yang ada yang ditulis dalam ATL ke Windows Runtime. Jika Anda sudah mengetahui ATL, Anda mungkin menemukan bahwa pemrograman Pustaka Templat C++ Windows Runtime lebih mudah.

Memulai

Berikut adalah beberapa sumber daya yang dapat membantu Anda bekerja dengan Pustaka Templat Windows Runtime C++ segera.

Cara: Mengaktifkan dan Menggunakan Komponen Runtime Windows
Memperlihatkan cara menggunakan Pustaka Templat Windows Runtime C++ untuk menginisialisasi Windows Runtime dan mengaktifkan dan menggunakan komponen Windows Runtime.

Cara: Menyelesaikan Operasi Asinkron
Memperlihatkan cara menggunakan Pustaka Templat Windows Runtime C++ untuk memulai operasi asinkron dan melakukan pekerjaan saat operasi selesai.

Cara: Menangani Peristiwa
Memperlihatkan cara menggunakan Pustaka Templat Windows Runtime C++ untuk berlangganan dan menangani peristiwa objek Windows Runtime.

Panduan: Membuat aplikasi UWP menggunakan WRL dan Media Foundation
Pelajari cara membuat aplikasi UWP yang menggunakan Microsoft Media Foundation.

Cara: Membuat Komponen COM Klasik
Memperlihatkan cara menggunakan Pustaka Templat C++ Runtime Windows untuk membuat komponen COM dasar dan cara dasar untuk mendaftar dan menggunakan komponen COM dari aplikasi desktop.

Cara: Membuat Instans Komponen WRL Secara Langsung
Pelajari cara menggunakan fungsi Microsoft::WRL::Make dan Microsoft::WRL::D etails::MakeAndInitialize untuk membuat instans komponen dari modul yang menentukannya.

Cara: Gunakan winmdidl.exe dan midlrt.exe untuk membuat file .h dari metadata windows
Memperlihatkan cara menggunakan komponen Windows Runtime kustom dari WRL dengan membuat file IDL dari metadata .winmd.

Panduan: Koneksi Menggunakan Tugas dan Permintaan HTTP XML
Memperlihatkan cara menggunakan antarmuka IXMLHTTPRequest2 dan IXMLHTTPRequest2Callback bersama dengan tugas untuk mengirim permintaan HTTP GET dan POST ke layanan web di aplikasi UWP.

Sampel Bing Peta Trip Optimizer
HttpRequest Menggunakan kelas yang ditentukan dalam Panduan: Koneksi Menggunakan Tugas dan Permintaan HTTP XML dalam konteks aplikasi UWP lengkap.

Membuat komponen DLL Runtime Windows dengan sampel C++
Memperlihatkan cara menggunakan Pustaka Templat Windows Runtime C++ untuk membuat komponen DLL dalam proses dan menggunakannya dari C++/CX, JavaScript, dan C#.

Sampel permainan labirin marmer DirectX
Menunjukkan cara menggunakan Windows Runtime C++ Template Library untuk mengelola masa pakai komponen COM seperti DirectX dan Media Foundation dalam konteks permainan 3-D lengkap.

Pemberitahuan toast dari aplikasi desktop
Menunjukkan cara mengirim pemberitahuan toast dari aplikasi desktop.

Pustaka Templat C++ Runtime Windows Dibandingkan dengan ATL

Pustaka Templat C++ Runtime Windows menyerupan Pustaka Templat Aktif (ATL) karena Anda dapat menggunakannya untuk membuat objek COM kecil dan cepat. Windows Runtime C++ Template Library dan ATL juga berbagi konsep seperti definisi objek dalam modul, pendaftaran antarmuka eksplisit, dan pembuatan objek terbuka dengan menggunakan pabrik. Anda mungkin nyaman dengan Pustaka Templat Windows Runtime C++ jika Anda terbiasa dengan ATL.

Pustaka Templat C++ Runtime Windows mendukung fungsionalitas COM yang diperlukan untuk aplikasi UWP. Oleh karena itu, berbeda dari ATL karena menghilangkan dukungan langsung untuk fitur COM seperti:

  • agregasi

  • implementasi saham

  • antarmuka ganda (IDispatch)

  • antarmuka enumerator standar

  • titik koneksi

  • antarmuka air mata

  • Penyematan OLE

  • Kontrol ActiveX

  • COM+

Konsep

Pustaka Templat C++ Runtime Windows menyediakan jenis yang mewakili beberapa konsep dasar. Bagian berikut ini menjelaskan jenis tersebut.

ComPtr

ComPtr adalah jenis penunjuk cerdas yang mewakili antarmuka yang ditentukan oleh parameter templat. Gunakan ComPtr untuk mendeklarasikan variabel yang dapat mengakses anggota objek yang berasal dari antarmuka. ComPtr secara otomatis mempertahankan jumlah referensi untuk penunjuk antarmuka yang mendasar dan merilis antarmuka saat jumlah referensi masuk ke nol.

RuntimeClass

RuntimeClass mewakili kelas instans yang mewarisi sekumpulan antarmuka tertentu. Objek RuntimeClass dapat memberikan kombinasi dukungan untuk satu atau beberapa antarmuka WINDOWS Runtime COM, atau referensi lemah ke komponen.

Modul

Modul mewakili kumpulan objek terkait. Objek Module mengelola pabrik kelas, yang membuat objek, dan pendaftaran, yang memungkinkan aplikasi lain untuk menggunakan objek.

Panggilan balik

Fungsi Callback membuat objek yang fungsi anggotanya adalah penanganan aktivitas (metode panggilan balik). Callback Gunakan fungsi untuk menulis operasi asinkron.

EventSource

EventSource digunakan untuk mengelola penangan aktivitas delegasi . Gunakan Pustaka Templat C++ Windows Runtime untuk menerapkan delegasi, dan gunakan EventSource untuk menambahkan, menghapus, dan memanggil delegasi.

AsyncBase

AsyncBase menyediakan metode virtual yang mewakili model pemrograman asinkron Windows Runtime. Ambil alih anggota di kelas ini untuk membuat kelas kustom yang dapat memulai, menghentikan, atau memeriksa kemajuan operasi asinkron.

FtmBase

FtmBase mewakili objek marshaler berulir bebas. FtmBase membuat tabel antarmuka global (GIT), dan membantu mengelola objek marshaling dan proksi.

WeakRef

WeakRef adalah jenis smart-pointer yang mewakili referensi lemah, yang mereferensikan objek yang mungkin atau mungkin tidak dapat diakses. Objek WeakRef hanya dapat digunakan oleh Windows Runtime, dan bukan oleh COM klasik.

Objek WeakRef biasanya mewakili objek yang keberadaannya dikendalikan oleh utas atau aplikasi eksternal. Misalnya, WeakRef objek dapat mereferensikan objek file. Ketika file terbuka, WeakRef file valid dan file yang dirujuk dapat diakses. Tetapi ketika file ditutup, WeakRef file tidak valid dan file tidak dapat diakses.

API Kunci menurut Kategori
Menyoroti jenis, fungsi, dan makro Pustaka Templat Windows Runtime C++ utama.

Referensi
Berisi informasi referensi untuk Pustaka Templat Windows Runtime C++.

Referensi Cepat (C++/CX)
Secara singkat menjelaskan fitur C++/CX yang mendukung Windows Runtime.

Menggunakan Komponen Runtime Windows di Visual C++
Memperlihatkan cara menggunakan C++/CX untuk membuat komponen Windows Runtime dasar.