MFC TreeCtrl 控制項(一) 簡單使用

2021-06-22 12:53:47 字數 1395 閱讀 8941

本文描述了 mfc 中的樹形控制項 treectrl 的簡單使用,內容包括資料項的新增、圖示設定、提示資訊設定等。

新建基於對話方塊的應用程式,新增乙個 treectrl ,為其定義乙個控制項變數 m_usertreectrl,並將其屬性:has buttons、has lines、lines at root和 info tip 都設為true。插入3個icon資源,分別作為 管理員、部門、使用者的圖示。定義類變數 cimagelist m_imagelist 儲存圖示列表,定義類變數 cstring  m_csusertips 設定使用者提示資訊,管理員和部門的提示資訊通過其他方式提示。

在對話方塊初始化函式中新增**:

hicon hicon[3];

m_imagelist.create(16, 16, ilc_color32, 3, 3);

for(int i=0; i<3; i++)

m_imagelist.add(hicon[i]);

m_usertreectrl.setimagelist(&m_imagelist, tvsil_normal);

m_csusertips = _t("使用者");

initusertree(); // 插入資料項

其中,initusertree 函式**如下:

void consitevideodlg::initusertree()

為了顯示控制項節點提示資訊,需要相應 treectrl 控制項的 tvn_getinfotip 訊息,其響應**如下:

void consitevideodlg::ontvngetinfotipusertree(nmhdr *pnmhdr, lresult *presult)

// 使用安全版本的拷貝函式,cstext獲取的長度需要加1,包含結束符

_tcscpy_s(ptvtipinfo->psztext, cstext.getlength()+1, cstext.getbuffer());

}

在上面的函式中,通過兩種方式設定了控制項節點的提示資訊,第一種是直接判斷介面的型別,然後設定器提示資訊,如根節點;第二種是根據用 setitemdata 函式為節點設定的額外資料來設定的。setitemdata 可傳入簡單數值或乙個指標,部門節點傳入的就是簡單的數值型別,通過判斷該型別的值,然後設定其提示資訊,其他的節點也可以通過這種方法來設定; 使用者節點傳入的則是乙個字串指標,此時,就可以直接獲取該字串的值,並將其設定為使用者節點的提示資訊。特別太需要注意的是該字串不能是乙個 initusertree 函式中的區域性變數,否則指標引用將出錯。

效果截圖如下:

訓練一 簡搜

題意 多組輸入,輸入兩個整數n,k 在乙個n n的矩陣中擺放棋子。其中 為空白區域,為棋子區域 q 在棋子區域擺放k個棋子,並且要求乙個棋子的所在的行和列不能再擺放棋子。思路 深搜的板子題,拜訪的棋子數初始化為0 1 從矩陣的第一行開始,2 遍歷每一行每乙個元素尋找 3 如果其沒有被訪問過,那麼標記...

Azure Data Factory(一)入門簡介

今天分享乙個新的azure 服務 azure data factory azure 資料工廠 怎麼理解,參考根據官方解釋 資料工廠解釋 大資料需要可以啟用協調和操作過程以將這些巨大的原始資料儲存優化為可操作的業務見解的服務。azure 資料工廠是為這些複雜的混合提取 轉換 載入 etl 提取 載入 ...

FlexGrid 控制項的使用 摘自 大道至簡

height 200,flexigrid 外掛程式的高度,單位為 pxwidth auto 寬度值,auto 表示根據每列的寬度自動計算 striped true,是否顯示斑紋效果,預設是奇偶互動的形式 novstripe false,minwidth 30,列的最小寬度 minheight 80,...