List Viewのラッパークラスを実装中

公開:2013-04-11 20:58
更新:2020-02-15 04:37
カテゴリ:windows

ボチボチとList Viewのラッパークラスを実装中。しかしList Viewのメッセージはすごい多いな。多機能だからだろうね。これをフルスクラッチから実装するのはかなりきついので、APIにご厄介になるしかないな。

Windowsのコントロールは基本、すべてメッセージでコントロールする。List ViewだとLVM_XXXXとかいうメッセージですべて制御する。それを関数風にするマクロもSDKで用意されている。しかしこのメッセージをオブジェクトに送るってやり方はやっぱりオブジェクト指向だよねぇ。SmallTalkの概要説明なんかでもよく出てくる言葉だったように思う。

Windows APIのウィンドウやコントロール周りのメッセージを受け渡すための構造体がいっぱいあるのだけれども、これはオブジェクトに対してメッセージを送る関数がPostMessage/SendMessageで、パラメータがWPARAM/LPARAMの2つしか指定できないためである。3つ以上のパラメータになると構造体にパラメータをおさめて、LPARAMに構造体へのポインタを渡すことで実質引数を増やすことができる。よくよく考えるとよくできた仕組みだなと思ってしまった。なので今でも使われているのだろうね。使っている人は減っているだろうけれども。