アイテムのテキストや背景色をアプリケーションが独自に描画することを意味します。ListView_GetItemRectで取得することになります。code);hwndは、リストビューのハンドルを指定します。iは、範囲を取得するアイテムのインデックスを指定します。prcは、RECT構造体のアドレスを指定します。codeは、アイテムのどの部分の範囲を取得するかを指定します。テキストを囲む範囲を取得する場合は、LVIR_LABELを指定します。サブアイテムの範囲を取得するには、ListView_GetSubItemRectを呼び出します。lpRect);hwndは、リストビューのハンドルを指定します。iItemは、サブアイテムの親であるアイテムのインデックスを指定します。iSubItemは、サブアイテムのインデックスを指定します。codeは、アイテムのどの部分の範囲を取得するかを指定します。テキストを囲む範囲を取得する場合は、LVIR_LABELを指定します。prcは、RECT構造体のアドレスを指定します。今回のプログラムは、リストビューのアイテムをオーナードローで描画します。-1);}リストビューでオーナードローを行うには、ウインドウスタイルにLVS_OWNERDRAWFIXEDを指定します。これにより、WM_DRAWITEMが送られることになるので、DrawItemという自作関数で描画を行うことになります。描画終了時にRestoreDCで属性を戻せるようにしておきます。次に、ListView_GetItemRectやListView_GetItemTextでアイテムの範囲やテキストを取得します。このとき、アイテムのIDは、DRAWITEMSTRUCT構造体のitemIDから参照しています。必要な情報が揃えば、実際に描画を開始していきます。FillRectで塗りつぶしを行います。このとき、アイテムが選択されているかによってブラシの色を変更している点が重要です。次に、SetBkModeでテキストを透過モードに設定し、SetTextColorで色を調整してからDrawTextを呼び出します。今回は、オーナードローの効果を確認するために、テキスト色は黒に設定していません。アイテムにフォーカスが割り当てられている場合は、DrawFocusRectで点線の長方形を描画します。