C++/WinRT

C++/WinRT adalah proyeksi bahasa C++17 modern yang sepenuhnya standar untuk API Windows Runtime (WinRT), yang diimplementasikan sebagai pustaka berbasis file header, dan dirancang untuk memberi Anda akses kelas satu ke Windows API modern. Dengan C++/WinRT, Anda dapat menulis dan menggunakan WINDOWS Runtime API menggunakan pengkompilasi C++17 yang mematuhi standar apa pun. Windows SDK mencakup C++/WinRT; ini diperkenalkan dalam versi 10.0.17134.0 (Windows 10, versi 1803).

C++/WinRT adalah untuk setiap pengembang yang tertarik menulis kode yang indah dan cepat untuk Windows. Ini alasannya.

Kasus untuk C++/WinRT

 

Bahasa pemrograman C++ digunakan baik di segmen perusahaan dan vendor perangkat lunak independen (ISV) untuk aplikasi di mana tingkat kebenaran, kualitas, dan performa yang tinggi dihargai. Misalnya: pemrograman sistem; sistem tertanam dan seluler yang dibatasi sumber daya; permainan dan grafik; driver perangkat; dan aplikasi industri, ilmiah, dan medis, untuk nama tetapi beberapa.

Dari sudut pandang bahasa, C++ selalu tentang penulisan dan konsumsi abstraksi yang kaya jenis dan ringan. Tetapi bahasa ini telah berubah secara radikal sejak pointer mentah, perulangan mentah, dan alokasi memori yang melelahkan dan melepaskan C++98. C++ modern (dari C++11 dan seterusnya) adalah tentang ekspresi ide yang jelas, kesederhanaan, keterbacaan, dan kemungkinan yang jauh lebih rendah untuk memperkenalkan bug.

Untuk penulisan dan penggunaan API Windows menggunakan C++, ada C++/WinRT. Ini adalah pengganti microsoft yang direkomendasikan untuk proyeksi bahasa C++/CX , dan Windows Runtime C++ Template Library (WRL).

Anda menggunakan jenis data, algoritma, dan kata kunci C++ standar saat Anda menggunakan C++/WinRT. Proyeksi memang memiliki jenis data kustomnya sendiri, tetapi dalam banyak kasus Anda tidak perlu mempelajarinya karena mereka memberikan konversi yang sesuai ke dan dari jenis standar. Dengan demikian, Anda dapat terus menggunakan fitur bahasa C++ standar yang biasa Anda gunakan, dan kode sumber yang sudah Anda miliki. C++/WinRT membuatnya sangat mudah untuk memanggil WINDOWS API di aplikasi C++ apa pun, dari Win32 hingga Windows AppSDK ke UWP.

C++/WinRT berkinerja lebih baik dan menghasilkan biner yang lebih kecil daripada opsi bahasa lain untuk Windows Runtime. Bahkan mengungguli kode tulisan tangan menggunakan antarmuka ABI secara langsung. Itu karena abstraksi menggunakan idiom C++ modern yang dirancang untuk mengoptimalkan pengompilasi Visual C++. Ini termasuk statis ajaib, kelas dasar kosong, elisi strlen , serta banyak pengoptimalan yang lebih baru dalam versi terbaru Visual C++ yang ditargetkan khusus untuk meningkatkan performa C++/WinRT.

Ada beberapa cara untuk secara bertahap memperkenalkan C++/WinRT ke dalam proyek Anda. Anda dapat menggunakan komponen Windows Runtime, atau Anda dapat beroperasi dengan C++/CX. Untuk informasi selengkapnya, lihat Interop antara C++/WinRT dan C++/CX.

Untuk informasi tentang porting ke C++/WinRT, lihat sumber daya ini.

Lihat juga Di mana saya dapat menemukan aplikasi sampel C++/WinRT?.

Topik tentang C++/WinRT

Topik Deskripsi
Pengantar C++/WinRT Pengantar C++/WinRT—proyeksi bahasa C++ standar untuk WINDOWS Runtime API.
Mulai menggunakan C++/WinRT Untuk mempercepat Anda menggunakan C++/WinRT, topik ini membahas contoh kode sederhana.
Apa yang baru di C++/WinRT Berita dan perubahan pada C++/WinRT.
Tanya jawab umum Jawaban atas pertanyaan yang mungkin Anda miliki tentang penulisan dan penggunaan WINDOWS Runtime API dengan C++/WinRT.
Pemecahan Masalah Tabel pemecahan masalah gejala dan solusi dalam topik ini mungkin berguna bagi Anda apakah Anda memotong kode baru atau memindahkan aplikasi yang ada.
Aplikasi sampel Photo Editor C++/WinRT Editor Foto adalah aplikasi sampel UWP yang menampilkan pengembangan dengan proyeksi bahasa C++/WinRT. Aplikasi sampel memungkinkan Anda mengambil foto dari pustaka Gambar , lalu mengedit gambar yang dipilih dengan efek foto bermakna.
Penanganan string Dengan C++/WinRT, Anda dapat memanggil WINDOWS Runtime API menggunakan jenis string lebar C++ standar, atau Anda dapat menggunakan jenis winrt::hstring.
Jenis data C++ standar dan C++/WinRT Dengan C++/WinRT, Anda dapat memanggil WINDOWS Runtime API menggunakan jenis data C++ Standar.
Nilai tinju dan pembukaan kotak ke IInspectable Nilai skalar atau array perlu dibungkus di dalam objek kelas referensi sebelum diteruskan ke fungsi yang mengharapkan IInspectable. Proses pembungkusan itu dikenal sebagai tinju nilai.
Menggunakan API dengan C++/WinRT Topik ini menunjukkan cara menggunakan API C++/WinRT, baik yang diimplementasikan oleh Windows, vendor komponen pihak ketiga, atau sendiri.
Api Penulis dengan C++/WinRT Topik ini menunjukkan cara menulis API C++/WinRT dengan menggunakan struktur dasar winrt::implements , baik secara langsung maupun tidak langsung.
Penanganan kesalahan dengan C++/WinRT Topik ini membahas strategi untuk menangani kesalahan saat pemrograman dengan C++/WinRT.
Menangani peristiwa dengan menggunakan delegasi Topik ini menunjukkan cara mendaftar dan mencabut delegasi penanganan peristiwa menggunakan C++/WinRT.
Kejadian penulis Topik ini menunjukkan cara menulis komponen Windows Runtime yang berisi kelas runtime yang meningkatkan peristiwa. Ini juga menunjukkan aplikasi yang mengonsumsi komponen dan menangani peristiwa.
Koleksi dengan C++/WinRT C++/WinRT menyediakan fungsi dan kelas dasar yang menghemat banyak waktu dan upaya saat Anda ingin menerapkan dan/atau meneruskan koleksi.
Operasi konkurensi dan asinkron Topik ini menunjukkan cara Anda dapat membuat dan mengonsumsi objek asinkron Windows Runtime dengan C++/WinRT.
Konkurensi dan asinkron tingkat lanjut Skenario tingkat lanjut dengan konkurensi dan asinkron di C++/WinRT.
Sampel sumber penyelesaian Menunjukkan bagaimana Anda dapat menulis dan menggunakan kelas sumber penyelesaian Anda sendiri.
Kontrol XAML; ikat ke properti C++/WinRT Properti yang dapat secara efektif terikat ke kontrol XAML dikenal sebagai properti yang dapat diamati. Topik ini menunjukkan cara mengimplementasikan dan menggunakan properti yang dapat diamati, dan cara mengikat kontrol XAML ke dalamnya.
Kontrol item XAML; ikat ke koleksi C++/WinRT Koleksi yang dapat secara efektif terikat ke kontrol item XAML dikenal sebagai koleksi yang dapat diamati. Topik ini menunjukkan cara menerapkan dan mengonsumsi koleksi yang dapat diamati, dan cara mengikat kontrol item XAML ke dalamnya.
Kontrol kustom XAML (templat) dengan C++/WinRT Topik ini memancang Anda melalui langkah-langkah pembuatan kontrol kustom sederhana menggunakan C++/WinRT. Anda dapat membangun info di sini untuk membuat kontrol UI anda sendiri yang kaya fitur dan dapat disesuaikan.
Meneruskan parameter ke API yang diproyeksikan C++/WinRT menyederhanakan parameter yang diteruskan ke API yang diproyeksikan dengan menyediakan konversi otomatis untuk kasus umum.
Mengonsumsi komponen COM dengan C++/WinRT Topik ini menggunakan contoh kode Direct2D lengkap untuk menunjukkan cara menggunakan C++/WinRT untuk menggunakan kelas dan antarmuka COM.
Komponen COM penulis dengan C++/WinRT C++/WinRT dapat membantu Anda menulis komponen COM klasik, seperti halnya membantu Anda menulis kelas Windows Runtime.
Pindah ke C++/WinRT dari C++/CX Topik ini menjelaskan detail teknis yang terlibat dalam porting kode sumber dalam proyek C++/CX setara dengan C++/WinRT.
Interop antara C++/WinRT dan C++/CX Topik ini menunjukkan dua fungsi pembantu yang dapat digunakan untuk mengonversi antara objek C++/CX dan C++/WinRT .
Asinkron, dan interop antara C++/WinRT dan C++/CX Ini adalah topik lanjutan yang terkait dengan porting secara bertahap dari C++/CX ke C++/WinRT. Ini menunjukkan bagaimana tugas dan koroutin Pustaka Pola Paralel (PPL) dapat ada secara berdampingan dalam proyek yang sama.
Pindah ke C++/WinRT dari WRL Topik ini menunjukkan cara memindahkan kode Windows Runtime C++ Template Library (WRL) ke yang setara di C++/WinRT.
Memindahkan sampel Clipboard ke C++/WinRT dari C#—studi kasus Topik ini menyajikan studi kasus porting salah satu sampel aplikasi Platform Windows Universal (UWP) dari C# ke C++/WinRT. Anda dapat memperoleh praktik dan pengalaman porting dengan mengikuti panduan dan memindahkan sampel untuk diri Anda sendiri saat Anda pergi.
Pindah ke C++/WinRT dari C# Topik ini secara komprehensif membuat katalog detail teknis yang terlibat dalam porting kode sumber dalam proyek C# setara di C++/WinRT.
Interop antara C++/WinRT dan ABI Topik ini menunjukkan cara mengonversi antara antarmuka biner aplikasi (ABI) dan objek C++/WinRT.
Referensi yang kuat dan lemah dalam C++/WinRT Windows Runtime adalah sistem yang dihitung referensi; dan dalam sistem seperti itu, penting bagi Anda untuk mengetahui tentang signifikansi, dan perbedaan antara referensi yang kuat dan lemah.
Objek tangkas Objek tangkas adalah objek yang dapat diakses dari utas apa pun. Jenis C++/WinRT Anda gesit secara default, tetapi Anda dapat menolaknya.
Mendiagnosis alokasi langsung Topik ini secara mendalam pada fitur C++/WinRT 2.0 yang membantu Anda mendiagnosis kesalahan pembuatan objek jenis implementasi pada tumpukan, daripada menggunakan winrt::make family of helpers, seperti yang Seharusnya.
Titik ekstensi untuk jenis implementasi Anda Titik ekstensi di C++/WinRT 2.0 ini memungkinkan Anda menunggak penghancuran jenis implementasi Anda, untuk mengkueri dengan aman selama penghancuran, dan untuk menghubungkan entri ke dalam dan keluar dari metode yang diproyeksikan.
Contoh dasar Pustaka UI Windows C++/WinRT 2 (UWP) Topik ini memandu Anda melalui proses penambahan dukungan dasar untuk Pustaka Windows UI (WinUI) ke proyek C++/WinRT UWP Anda. Secara khusus, topik ini berkaitan dengan WinUI 2, yaitu untuk aplikasi UWP.
Komponen Windows Runtime dengan C++/WinRT Topik ini menunjukkan cara menggunakan C++/WinRT untuk membuat dan menggunakan komponen Windows Runtime—komponen yang dapat dipanggil dari aplikasi Universal Windows yang dibuat menggunakan bahasa Windows Runtime apa pun.
Menulis komponen C# Windows Runtime untuk digunakan dari aplikasi C++/WinRT Topik ini memancang Anda melalui proses penambahan komponen C# sederhana ke proyek C++/WinRT Anda.
Visual Studio visualisasi debug asli (natvis) untuk C++/WinRT C++/WinRT Visual Studio Extension (VSIX) memberi Anda visualisasi debug asli Visual Studio (natvis) dari jenis proyeksi C++/WinRT. Ini memberi Anda pengalaman yang mirip dengan penelusuran kesalahan C#.
Makro konfigurasi Topik ini menjelaskan makro konfigurasi C++/WinRT.
Konvensi penamaan C++/WinRT Topik ini menjelaskan konvensi penamaan yang telah ditetapkan C++/WinRT.

Topik tentang bahasa C++

Topik Deskripsi
Kategori nilai, dan referensi ke kategori tersebut Topik ini menjelaskan berbagai kategori nilai yang ada di C++. Anda tidak akan ragu telah mendengar lvalues dan rvalues, tetapi ada jenis lain juga.

API penting