2021-01-01から1ヶ月間の記事一覧
主要なカテゴリのまとめページへのリンクです。最近は更新をさぼり気味です。 WIL (Windows Implementation Libraries)関係 tidyverse関係(R言語) C#言語関係 C++言語関係 その他言語関係(Windows一般、JavaScript、PowerShell、Python 3)
STLはsize_t、Win32 APIはDWORD(あるいはUINT)を使う場合が多いです。size_tからDWORDへは暗黙にキャストできますが、範囲外が切り捨てられる可能性があるのでコンパイル警告が発生します。Cスタイルキャスト(DWORD)...やキャスト演算子static_cast<DWORD>(...)に</dword>…
std::spanでは生のポインタもSTLコンテナと同様に扱えます1。生ポインタの操作は通常推奨されませんが、WinAPIは連続したメモリ領域に異なる型を複数配置する場合があり、その場合に使用することになります。例えばFILESYSTEM_STATSTICS_EX構造体の直後にEXF…
C++20におけるWinAPIのDeviceIoControl(FSCTL_FILESYSTEM_GET_STATISTICS_EX)のラッパークラスです。ファイルは本体であるDeviceIoControlForFileSystemStatisticsExを定義するDeviceIoControlForFileSystemStatisticsEx.hpp、再利用可能そうなコードを集…
Microsoft Visual Studio 2019 Community 16.9.0 Preview 3におけるstd::ranges::subrangeのメンバー関数使用例です。 #include <ranges> #include <vector> int main() { std::vector v{ 0, 1, 2, 3, 4 }; // std::ranges::subrange r{ v }; std::ranges::subrange r(v.cbeg</vector></ranges>…
C++20には所有権を持たず範囲を表すクラスとしてstd::span、std::basic_string_view、std::ranges::subrangeが用意されています。これらの概要は以下の通りです。 クラス 概要 std::span 連続したメモリ領域の部分を参照する。 std::basic_string_view 文字…
C++20のコンセプト関係のメモです。 std::destructibleはnoexcept(true)なデストラクタを持つクラスを含まない std::constructible_fromコンセプトはnoexcept(true)なデストラクタを持つクラスを含まない ある型が特定の型の引数から構築可能か調べる std::r…
C++で文字列をある文字で分割した文字列ビューのベクターを作成するコードです。コンセプトを使用したC++20以降用のコード、std::basic_string_viewを使用したC++17以降用のコードを記載しています。 C++20以降用のコード あまり使う機会はありませんがbasic…
動作確認環境 ソースコード 名前空間の省略、元の型の優先 名前空間の省略、auto型の優先 名前空間の明記、元の型の優先 説明 WinRTの使用に関する事項 WinRTの一般事項 コード特有の事項 MicrosoftのWinRTリファレンス 動作確認環境 Microsoft Visual Studi…
Microsoft Visual Studio Community 2019 16.9.0 Preview 3.0でC++/WinRT開発を有効にしたとき、いくつかの準備が必要でした。具体的にはVisual Studioで次の操作を実行します。順番は自由です。 機能:「ツールと機能を取得」で「ユニバーサル Windows プラ…
本文 C++でワイド文字列の静的配列(const wchar_t ...[];)からstd::vector<std::wstring>へ変換するにはstd::vector<std::wstring>のコンストラクタを使用します。引数には静的配列の(変換したい範囲の)最初と最後要素のアドレスを渡します。このコンストラクタはcpprefjpではイテレ</std::wstring></std::wstring>…
C++とWin32 APIでファイルの多言語対応リソース(Microsoft Docsでは「language-specific resource files」)の言語名とMUIファイルパスを取得するサンプルコードです。 // 動作確認環境:C++ 17 #include <io.h> #include <fcntl.h> #include <array> #include <filesystem> #include <iostream> #includ</iostream></filesystem></array></fcntl.h></io.h>…
PowerShell 7を起動したら表示されました。以下のリンクから更新内容の確認とダウンロードできます。 github.com
2028/8/25:C# 12 (.NET 8)版のコードはこちらです。 動作確認環境:C# 9.0 preview C#でimageres.dll.munからProgressRingのリソースのPNGデータを読み込むサンプルコードです。実際には複数のPNGリソースが保管されているため、代表としてリソースID 5021…
Windows 10のリソースについて調べていると%WINDIR%\System32\imageres.dllがヒットします。以前はこのDLLにいくつかのリソースが保存されていましたが、現在は次の場所に移動されています。 %WINDIR%\SystemResources\imageres.dll.mun .munという拡張子は…
動作確認環境:MSVC、C++20 (preview) Win32 APIのDeviceIoControl関数とIOCTL_STORAGE_QUERY_PROPERTYフラグを使ってパスを含むドライブがSSD等か確認するサンプルコードです。オリジナルのソースコードはMicrosoft BlogのThe Old New ThingでRaymond Chen…
Win32 APIの固定長文字列をSTLで扱うとき、バッファーの選択肢にstd::arrayとstd::vectorが挙げられます。 これらは連続したメモリ領域を管理する似たようなSTLコンテナクラスですが、メモリの確保場所が異なります。 それぞれの確保場所とその性質は次表の…
MSVC(2019 Community Preview)におけるC++のnew/delete演算子の覚え書きです。 目次 いつものnew/delete/new[]/delete[]演算子の実体はグローバルスコープの関数 クラスの演算子オーバーロードによるクラススコープのnew/delete/new[]/delete[]の定義とグ…
WIL(Windows Implementation Libraries)のソースコードを読んでいたら次のコードを見つけました。 #define BEEP_IF(condition) do { if (wil::verify_bool(condition)) { Beep(); } } while ((void)0, 0) BEEP_IF(condition)マクロの定義、if ((condition)…