標準列表控件缺乏編輯與下拉功能,屬性控件雖內建但 CUSTOMDRAW 不完善。自行開發屬性列表控件,支援樹狀分類、單元格編輯、下拉選單。
BEGIN_CREATE_NODE
BEGIN_YJITEM(0, YJ_FOLDER, YJ_DEFAULT, _T("檔案"), YJEDIT, true, _T("檔案"))
BEGIN_YJITEM(1, YJ_FOLDER, YJ_DEFAULT, _T("新建"), YJEDIT, true, _T("文件"))
BEGIN_YJITEM(1, YJ_ITEM, YJ_DEFAULT, _T("開啟"), YJLISTBOX, true, _T("文件#程式#文字"))
BEGIN_YJITEM(1, YJ_ITEM, YJ_DEFAULT, _T("結束"), YJLISTBOX, true, _T("文件#程式#文字"))
BEGIN_YJITEM(0, YJ_FOLDER, YJ_DEFAULT, _T("編輯"), YJEDIT, true, _T("檔案"))
// ... 更多項目
END_CREATE_NODE
YJEDIT/YJLISTBOX)、啟用、下拉選項(# 分隔)。CRATE_STRUCT(&m_propertyList); // 巨集展開建立樹狀結構
m_propertyList.Invalidate(); // 觸發重繪
// 遍歷取值
for (int i=0; i<m_propertyList.GetSize(); i++)
m_propertyList.m_List[i]->GetString();
YJPropertyItem 物件,儲存屬性值、編輯模式、下拉資料。CListCtrl 或 CTreeCtrl,處理 NM_CUSTOMDRAW、NM_DBLCLK 進入編輯狀態。CEdit/CComboBox),定位於單元格矩形內。Windows XP + VS2003,原始碼見附件。