WindowsAPI(Win32API) Advent Calendar 2015 9日目
WindowsAPI(Win32API) Advent Calendar 2015 - Adventar

ListView_GetNextItemは、リストビューの指定されたインデックスから順に調べて、指定の条件の状態になっている項目のインデックスを探しだすマクロ・・・。

ListView_GetNextItem macro (Windows)

ファイルを検索するAPIのFindNextFileのように繰り返し処理と一緒に使う・・・。

resource.hに、

ListView_GetNextItem.rcに、

Button2(ID_BUTTON2)を追加・・・。

Button2(ID_BUTTON2)が押された時、

ListView_GetNextItemに、リストビューのハンドルhList、最初に調べる項目のインデックスidx(初期値は-1)、条件は選択された状態(LVNI_SELECTED)を指定する・・・。
初期値が-1の時は、先頭から調べるということなので、先頭から選択された項目を探す・・・。
戻り値が-1でなければ、戻り値が見つかったインデックスとなる・・・。
見つかったインデックスをMessageBoxで表示したら、今度はそのインデックスから条件に合う次のインデックスを探す・・・。
(といっても、この場合は1つしか選択できないので終了となるが・・・。)
こうして戻り値が-1になるまで探す・・・。

f:id:BG1:20151209155343p:plain

このようにTaro, Jiro, Saburoを上から追加していき、

f:id:BG1:20151209155439p:plain

Taroを選択し、Button2を押すと、

f:id:BG1:20151209155539p:plain

idxは2であることがわかる・・・。

f:id:BG1:20151209155633p:plain

Jiroを選択し、Button2を押すと、

f:id:BG1:20151209155659p:plain

idxは1・・・。

f:id:BG1:20151209155733p:plain

Saburoを選択し、Button2を押すと、

f:id:BG1:20151209155803p:plain

idxは0となる・・・。

Sample/ListView_GetNextItem.cpp at master · bg1bgst333/Sample · GitHub
Sample/resource.h at master · bg1bgst333/Sample · GitHub
Sample/ListView_GetNextItem.rc at master · bg1bgst333/Sample · GitHub