0

だから私は CListCtrl を使用して実装していPostMessage(LVN_INSERTITEM,0,(LPARAM) lvitem)ます。そして、lvitem を区別する方法が必要です。後で lvitem を取得するときに、それがファイルかディレクトリかを判断できるようにするためです。を使用して実装する必要があるPostMessageため、アイテムがいつ挿入されるか正確にはわかりません。項目を動的に割り当てています (動的に割り当てられたメモリ ポインターを LVITEM 構造体の lParam 属性に格納するため、挿入後に通知を処理し、項目からアドレスを取得するメモリの割り当てを解除します)。

4

2 に答える 2

1

lParam構造体のメンバーを使用して、LVITEMリストアイテムのカスタムデータを設定できます。

// custom structure to hold some information
struct listItem {
   int value;
   char path[MAX_PATH];
};

// initialize a custom object to hold a value and a path
LVITEM lvi;
listItem* pItem = new listItem();
pItem->value = 666;
sprintf(pItem->path,"c:\\\\xampp\\htdocs");

// initialize a LVITEM object
memset(&lvi, 0, sizeof(lvi)),
lvi.pszText = "My Folder";
lvi.mask = LVIF_PARAM | LVIF_TEXT;
// lParam points to our custom object
lvi.lParam = (LPARAM)pItem;
SendMessage(g_hwndLV, LVM_INSERTITEM, 0, (LPARAM)&lvi);

注:lParamこの場合、を使用して指定されたメモリを解放する必要がありますdelete

于 2011-12-08T15:19:27.850 に答える
0

で任意のデータを設定できますが、メソッドを使用する代わりにCListCtrl::SetItemDataメソッドを使用する必要があります(これは低レベルの Win32 呼び出しであり、MFC ではありません)。CListCtrl::InsertItemPostMessage

于 2011-12-08T09:23:13.820 に答える