高级控件

列表控件

  1. 初始化
    1. 设置窗口风格:
      1. 1572049065726.png
  2. 消息
    1. NM_CLICK : 左键单击
    2. NM_DBCLICK : 左键双击
    3. NM_RCLICK : 右键单击
    4. NM_RDBCLICK : 右键双击
    5. NM_RETURN : 回车
  3. 操作函数:
    1. | 函数 | 说明 | | —- | —- | | InsertColumn | 插入一列 | | DeleteColumn | 删除一列 | | InsertItem | 插入一行 | | DeleteItem | 删掉一行 | | GetItemText | 获取某一个单元格的文本 | | SetItemText | 设置某一个单元格的文本 | | GetItemData | 获取单元格中的值 | | SetItemData | 用int型数据设置单元格文本 | | GetItemCount | 获取行数 |
  1. 获取被点击的节点

    1. // HitTest可以根据鼠标的位置来找到
    2. // 节点的行.(是判断鼠标坐标是落在哪
    3. // 一行上)
    4. // 鼠标坐标必须转换成列表控件的客户区
    5. // 坐标
    6. CPoint pos;
    7. GetCursorPos(&pos);
    8. // !!!
    9. // 必须是通过列表控件所绑定的变量来调用
    10. // ScreenToClient函数.
    11. // !!!!
    12. m_list.ScreenToClient(&pos);
    13. int nIndex = m_list.HitTest(pos);
    14. if (nIndex != -1) {
    15. CString buff;
    16. buff = m_list.GetItemText(nIndex, 0);
    17. MessageBox(buff);
    18. }
  2. 节点附加数据的使用

树控件

  1. 初始化
  2. 消息
    1. 和列表控件一样
  3. 操作函数:
    1. | InsertItem | 插入一项 | | —- | —- | | DeleteAllItems | 删除所有项 | | DeleteItem | 删除某一项 | | SelectItem | 选择某一项 | | GetItemText | 获取某个节点的文本 | | GetNextSiblingItem | 获取下个兄弟节点 | | GetPrevSiblingItem | 获取上个兄弟节点 | | GetParentItem | 获取父节点 | | GetRootItem | 获取根节点 | | GetSelectedItem | 获取被选择的项 |

选项卡控件

子类化Tab控件

  1. 继承CTabCtrl类
  2. 添加成员函数: addTab 来添加一个选项卡.
    1. 选项卡的标题
    2. 选项卡的子窗口
  3. 处理TCN_SELCHANG发射消息
    1. 将所有选项卡的子窗口的大小设置成Tab控件的客户区大小
    2. 将所有选项卡的子窗口的坐标移动到Tab控件的客户区
    3. 将所有的选项卡的子窗口隐藏
    4. 将当前选项卡对应的子窗口显示

控件封装(子类化MFC的类)

项目

mfc_003.zip