首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> VC >> 關於VC++

VC 屬性列表控件開發:支援編輯與下拉選擇

     編輯:關於VC++

動機

標準列表控件缺乏編輯與下拉功能,屬性控件雖內建但 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,原始碼見附件。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved