『HSPの裏技』リストビューを作成してみる ACT-1(HSP2.x 版)をHSP3.x バージョンへ書き換えたものです。
http://chokuto.ifdef.jp/urawaza/listview1.html
前のが間違ってたので書き直し(3回目・・・)
『HSPの裏技』リストビューを作成してみる ACT-1(HSP2.x 版)をHSP3.x バージョンへ書き換えたものです。
http://chokuto.ifdef.jp/urawaza/listview1.html
前のが間違ってたので書き直し(3回目・・・)
;【HSP3.x 移植版】 ;『HSPの裏技』リストビューを作成してみる ACT-1 ; http://chokuto.ifdef.jp/urawaza/listview1.html #module ;============= リストビュー操作モジュール =============== #uselib "comctl32.dll" #func InitCommonControlsEx "InitCommonControlsEx" int ; 各種定数定義 #define ICC_LISTVIEW_CLASSES 4 #define WS_CHILD 0x40000000 #define WS_VISIBLE 0x10000000 #define LVS_REPORT 0x0001 #define LVM_SETITEM 0x1006 #define LVM_INSERTITEM 0x1007 #define LVM_INSERTCOLUMN 0x101B #define LVCF_FMT 0x0001 #define LVCF_WIDTH 0x0002 #define LVCF_TEXT 0x0004 #define LVCF_SUBITEM 0x0008 #define LVIF_TEXT 0x0001 ; (外部から参照できるように global 指定) #define global LVCFMT_LEFT 0x0000 #define global LVCFMT_RIGHT 0x0001 #define global LVCFMT_CENTER 0x0002 ; リストビュー作成 #deffunc CreateListView int sx, int sy ; コモンコントロールライブラリの初期化 initinfo = 8, ICC_LISTVIEW_CLASSES InitCommonControlsEx varptr(initinfo) ; リストビューの作成 styleFlags = WS_CHILD | WS_VISIBLE | LVS_REPORT winobj "SysListView32", "", 0, styleFlags, sx, sy return ; リストビューに列を追加 #deffunc InsertListViewColumn int objID, int index, str text, int align, int pixels textbuf = text ; LVCOLUMN 構造体をセット dim lvcolumn, 8 lvcolumn(0) = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM lvcolumn(1) = align lvcolumn(2) = pixels lvcolumn(3) = varptr(textbuf) ; LVM_INSERTCOLUMN メッセージ送信 sendmsg objinfo_hwnd(objID), LVM_INSERTCOLUMN, index, varptr(lvcolumn) return ; リストビューに項目追加 #deffunc InsertListViewItem int objID, int index, str text textbuf = text ; LVITEM 構造体をセット dim lvitem, 13 lvitem(0) = LVIF_TEXT lvitem(1) = index lvitem(5) = varptr(textbuf) ; LVM_INSERTITEM メッセージ送信 sendmsg objinfo_hwnd(objID), LVM_INSERTITEM, 0, varptr(lvitem) return ; リストビューの項目またはサブ項目テキスト設定 #deffunc SetListViewItemText int objID, int index, int subitem, str text textbuf = text ; LVITEM 構造体をセット dim lvitem, 13 lvitem(0) = LVIF_TEXT lvitem(1) = index lvitem(2) = subitem lvitem(5) = varptr(textbuf) ; LVM_SETITEM メッセージ送信 sendmsg objinfo_hwnd(objID), LVM_SETITEM, 0, varptr(lvitem) return #global ;================= モジュール終わり ===================== pos 0, 0 CreateListView ginfo_winx, ginfo_winy listviewID = stat InsertListViewColumn listviewID, 0, "名前", LVCFMT_LEFT, 100 InsertListViewColumn listviewID, 1, "読み", LVCFMT_LEFT, 200 InsertListViewItem listviewID, 0, "在原業平" SetListViewItemText listviewID, 0, 1, "ありわらのなりひら" InsertListViewItem listviewID, 1, "僧正遍昭" SetListViewItemText listviewID, 1, 1, "そうじょうへんじょう" InsertListViewItem listviewID, 2, "喜撰法師" SetListViewItemText listviewID, 2, 1, "きせんほうし" InsertListViewItem listviewID, 3, "大伴黒主" SetListViewItemText listviewID, 3, 1, "おおとものくろぬし" InsertListViewItem listviewID, 4, "文屋康秀" SetListViewItemText listviewID, 4, 1, "ふんやのやすひで" InsertListViewItem listviewID, 5, "小野小町" SetListViewItemText listviewID, 5, 1, "おののこまち" stop