SystemParametersInfo

SystemParametersInfoで、システムパラメータを取得したり、設定できる。

SystemParametersInfoW 関数 (winuser.h) - Win32 apps | Microsoft Learn

タスクバーを除いたデスクトップ領域のサイズを取得する。
resource.hで、

ID_SYSTEM_INFOを追加。
SystemParametersInfo.rcで、

"Info(&I)..."を追加。
SystemParametersInfo.cppで、

ID_SYSTEM_INFOが来た場合、SystemParametersInfoで、SPI_GETWORKAREAを指定し、サイズを取得し、stasicなRECTのrcに格納。
InvalidateRectで画面更新。

WM_PAINTでrcの各要素も描画。

Infoを選択。
Infoを選択。

Infoを選択。

rc.rightとrc.bottomが変わった。サイズが格納されたということ。
rc.rightとrc.bottomが変わった。サイズが格納されたということ。

rc.rightとrc.bottomが変わった。サイズが格納されたということ。

Sample/winapi/SystemParametersInfo/SystemParametersInfo/src/SystemParametersInfo at master · bg1bgst333/Sample · GitHub

select句での加工

select句には、要素やそのプロパティだけでなく、それらを加工したものも指定できる。

クエリ式の基本 (C# での LINQ) | Microsoft Learn
LINQ:取得列を明示的に指定する - select句/SelectManyメソッド[C#] - Build Insider

MainClass.csで、

p.Nameを、

"Name = " + p.Name

という形で加工したものを列挙する。

こうなる。
こうなる。

こうなる。

Sample/cs/select/select_1/src/select at master · bg1bgst333/Sample · GitHub

SHFILEINFO

SHFILEINFOは、ファイル情報を持つ構造体。

SHFILEINFOW (shellapi.h) - Win32 apps | Microsoft Learn

アイコンハンドルを取得してみる。
SHFILEINFO.cppで、

SHGFI_ICONを追加。
WM_PAINTで、

今回はsfi.hIconの値を描画。
(アイコン自体の描画はいずれ・・・。)

sfi.hIconは終了時に破棄しないといけないらしいので、WM_CLOSE時にDestroyIcon。

Openを選択
Openを選択

Openを選択。

text1.txtを選択。
text1.txtを選択。

text1.txtを選択。

hIconの値も表示された。
hIconの値も表示された。

hIconの値も表示された。

Sample/winapi/SHFILEINFO/SHFILEINFO/src/SHFILEINFO at master · bg1bgst333/Sample · GitHub

複合from句

fromで取り出した要素が、またリストのようなシーケンスを持っている場合などでは、fromを複数繋げて内側の要素を取り出せる。

クエリ式の基本 (C# での LINQ) | Microsoft Learn
from 句 - C# リファレンス | Microsoft Learn

Country.csは、

メンバにList<City>を持っている。
City.csは、

Populationはその都市の人口。
MainClass.csは、

countriesからcountryを取り出し、country.Citiesからcityを取り出し、city.Populationが5000000以上に絞り、city.Nameを列挙。

こうなる。
こうなる。

こうなる。

Sample/cs/from/from_1/src/from at master · bg1bgst333/Sample · GitHub

SHGetFileInfo

SHGetFileInfoで、指定されたパスのファイル情報を取得する。

SHGetFileInfoW 関数 (shellapi.h) - Win32 apps | Microsoft Learn

GetFileTitleの項のソースコードをベースに、

SHFILEINFO型変数sfiをstaticで用意しておく。

Openが選択された時の最後に、SHGetFileInfoで表示名と種類を取得し、sfiに格納したら、InvalidateRectで更新。

WM_PAINT時にTextOutで表示名と種類を描画。

Openを選択
Openを選択

Openを選択。

text1.txtを選択。
text1.txtを選択。

text1.txtを選択。

表示名と種類が描画された。
表示名と種類が描画された。

表示名と種類が描画された。

Sample/winapi/SHGetFileInfo/SHGetFileInfo/src/SHGetFileInfo at master · bg1bgst333/Sample · GitHub

ascending

ascendingを付けた場合は、昇順になる。

orderby 句 - C# リファレンス | Microsoft Learn

MainClass.csで、

"orderby p.Height ascending"とすると、

また昇順になった。
また昇順になった。

また昇順になった。

Sample/cs/orderby/ascending/src/orderby at master · bg1bgst333/Sample · GitHub

PathFindExtension

PathFindExtensionは、指定されたパスからドット(.)を含む拡張子部分だけを抽出する。

PathFindExtensionA 関数 (shwlapi.h) - Win32 apps | Microsoft Learn

PathFindExtension.cppで、

こう書く。

&quot;text1.txt&quot;から&quot;.txt&quot;を抽出できた。
"text1.txt"から".txt"を抽出できた。

"text1.txt"から".txt"を抽出できた。

Sample/winapi/PathFindExtension/PathFindExtension/src/PathFindExtension at master · bg1bgst333/Sample · GitHub