所以我正在使用PostMessage(LVN_INSERTITEM,0,(LPARAM) lvitem)
實現CListCtrl。我需要一種方法來區分lvitems,以便稍後當我得到一個lvitem時,告訴它是一個文件還是目錄。我需要使用PostMessage
來實現,所以我不知道該項目何時插入。我動態分配項目(將動態分配的內存指針存儲在LVITEM結構的lParam屬性中,所以在插入它之後,我將它視爲通知並取消分配從項目獲取地址的內存)。如何區分一些LVITEMS(文件或目錄)?
回答
可以使用LVITEM
結構的lParam
成員設置自定義的數據爲您列出的項目:
// 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
來。
關於這個想法很好,但不幸的是,對我來說,lparam已經被用於存儲動態分配的LVITEM的原始指針,以便在它插入與postmessage異步後,我可以處理通知,並且從新插入的項目中獲取原始地址,並將其解除分配。 –
我在想這個,是的,我想我要定義一個保存地址的結構,以及一個用於確定文件或目錄的布爾變量,並將結構設置爲lParam,並且當我收到LVN_INSERT_ITEM通知處理項目地址,我要設置它的項目數據。 –
您可以使用CListCtrl::SetItemData
設置任意數據,但您應該使用方法CListCtrl::InsertItem
而不是使用PostMessage
(它是低級別的Win32調用,而不是MFC)。
我知道我可以使用該函數設置數據,但通過使用postmessage,我不知道消息何時將被處理,所以我不知道該項目何時插入,並且唯一一次我知道它是屬性是當我postmessage它。我需要不同的解決方案。 –
那你爲什麼要用PostMessage()呢?除了不是慣用的MFC代碼,它不能解決你的問題。你爲什麼不使用'CListCtrl :: InsertItem()'? – Andre
@Andre - OP發佈來自不同線程的lvitem?這將解釋PostMessage和在CListCtrl更新後取消分配lvitem的必要(發佈線程已經綁定了lvitem,但通過發佈其指針來放棄所有權 - 接收線程必須在處理該消息之後釋放它)。 –
- 1. 區分paramiko中的文件或目錄
- 2. 區分文件和目錄
- 3. 區分文件從目錄
- 4. 如何找到一些文件目錄
- 5. 在目錄中遞歸地區分某些類型的文件
- 6. 如何區分fat16中的目錄和文件條目?
- 7. 如何找到一個目錄或分區目錄中的空間量是
- 8. 如何區分「一些文本」和「一些文本」?
- 9. 使用java區分文件和目錄
- 10. 在PHP中區分文件和目錄
- 11. 如何找到掛載/分區目錄或文件已打開? (Linux服務器)
- 12. 如何僅使用U-SQL和文件中的某些字段將大文件分區爲文件/目錄?
- 13. 在php中區分一個目錄和一個文件
- 14. 如何區分這些條目?
- 15. 如何區分Perl中的文件和目錄?
- 16. 如何區分目錄中的文件在moveItemAtPath:toPath:錯誤:方法
- 17. 如何在NERDTree中區分git忽略的文件和目錄
- 18. 如何區分目錄中的mp3和jpeg文件?
- 19. 如何推送到遠程只有一些目錄或文件?在git
- 20. 如何瀏覽文件夾或文件或目錄使用php
- 21. 如何通過SSH區分目錄
- 22. 如何從所選目錄加載一些文件,ASP.NET
- 23. 重命名目錄和一些包含的文件/子目錄
- 24. 如何捕捉文件或目錄中的某個目錄php
- 25. 如何區分文件或目錄下創建HBase的或任何其他處理?
- 26. 如何確定一個目錄是否在同一分區
- 27. 只包括一些目錄的分支
- 28. 區分Word文檔中的目錄
- 29. 如何區分源文件?
- 30. 如何區分DLL文件
在wParam中存儲布爾或枚舉? –
或者只是在lvitem結構之後存儲其他數據。 –