Mfc

Radio Button

需设置group属性,才可在类向导对应类中的成员变量栏看到单选框.

若绑定变量类型为int,0,1,2…分别对应对话框中第几个单选框.

示例:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
UpdateData(TRUE);
switch (m_nGender)
  {
    case 0:
    {
        AfxMessageBox("性别 男");
        break;
    }
    case 1:
    {
        AfxMessageBox("性别 女");
        break;
    }
  }

Combo Box

绑定CComboBox这个类型.

1
2
3
//可向组合框中的项添加4字节的附加数据
int SetItemData( int nIndex, DWORD dwItemData );
DWORD GetItemData( int nIndex ) const;

初始化

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
//在OnInitDialog这个函数中写代码
int nItemIdx = 0;
//向组合框中添加内容
m_cmbLocation.AddString("河南");
m_cmbLocation.SetItemData(nItemIdx++, 10);//为每一项添加4字节的附加数据

m_cmbLocation.AddString("湖南");
m_cmbLocation.SetItemData(nItemIdx++, 10);
//设置组合框默认选项
m_cmbLocation.SetCurSel(0);

获取组合框选中项的文本

1
2
3
4
5
6
7
//获取当前选中的索引值
int nIdx = m_cmbLocation.GetCurSel();
//通过索引值获取文本
CString csBuf;
m_cmbLocation.GetLBText(nIdx, csBuf);
//获取保存在此项的4字节附加数据
DWORD dwExtraData = m_cmbLocation.GetItemData(nIdx);

List Control

设置列表控件属性中的View为Report

绑定CListCtrl这个类型

1
2
3
//可向列表控件的项添加4字节的附加数据
BOOL SetItemData( int nItem, DWORD dwData );
DWORD GetItemData( int nItem ) const;

初始化

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
//在OnInitDialog这个函数中写代码
//初始化列表控件
//插入表头
int nColIdx = 0;
m_LstCtrl.InsertColumn(nColIdx++, "姓名");
m_LstCtrl.InsertColumn(nColIdx++, "性别");
m_LstCtrl.InsertColumn(nColIdx++, "爱好");

//添加内容
int nItemIdx = 0;//列表控件的行
//插入第一项
m_LstCtrl.InsertItem(nItemIdx, "Luo");
int nSubItemIdx = 1;//列表控件的列
m_LstCtrl.SetItemText(nItemIdx, nSubItemIdx++, "男");
m_LstCtrl.SetItemText(nItemIdx, nSubItemIdx++, "敲代码");

//设置整行选择
DWORD dwStyle = m_LstCtrl.GetExtendedStyle();
m_LstCtrl.SetExtendedStyle(dwStyle | LVS_EX_FULLROWSELECT);

//设置所有列根据内容自动调整宽度
//获取表头
CHeaderCtrl* pHeaderCtrl = m_LstCtrl.GetHeaderCtrl();
//通过表头获取有多少列
int nColNum = pHeaderCtrl->GetItemCount();
for (int i = 0; i < nColNum;i++)
 {
     m_LstCtrl.SetColumnWidth(i, LVSCW_AUTOSIZE_USEHEADER);
 }

获取列表控件选中项的文本

1
2
3
4
5
6
//获取当前选中的行的索引值
int  nItemIdx = m_LstCtrl.GetSelectionMark();
//获取选中行的文本信息
CString csName = m_LstCtrl.GetItemText(nItemIdx, 0);
CString csGender = m_LstCtrl.GetItemText(nItemIdx, 1);
CString csLike = m_LstCtrl.GetItemText(nItemIdx, 2);

右键弹出菜单

新建一个菜单资源:

列表控件菜单

响应菜单消息:

  1. 打开类向导,在命令栏中找到List Control对应的ID
  2. 在右边的消息中,双击NM_RCLICK
  3. 添加代码
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR);
// TODO:  在此添加控件通知处理程序代码
*pResult = 0;

//坐标转换
m_LstCtrl.ClientToScreen(&pNMItemActivate->ptAction);

//弹出菜单
CMenu cMn;
cMn.LoadMenu(IDR_MENU1);//从资源加载菜单
CMenu* pSubMenu = cMn.GetSubMenu(0);//获取子菜单
pSubMenu->TrackPopupMenu(TPM_LEFTALIGN,
                         pNMItemActivate->ptAction.x,
                         pNMItemActivate->ptAction.y,
                         this);//最后一个参数类型CWnd*,填写处理这一消息的窗口指针

Tree Control

绑定CTreeCtrl这个类型

1
2
3
//可向树控件中的项添加4字节的附加数据
BOOL SetItemData( HTREEITEM hItem, DWORD dwData );
DWORD GetItemData( HTREEITEM hItem ) const;

设置风格

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
//获取树控件的句柄
HWND hwndTree = GetDlgItem(m_hWnd, IDC_TREE);
//设置树控件的风格
DWORD dwStyle = GetWindowLong(hwndTree, GWL_STYLE);
dwStyle = dwStyle |
         TVS_HASLINES |
         TVS_LINESATROOT |
         TVS_HASBUTTONS |
         TVS_SHOWSELALWAYS;
SetWindowLong(hwndTree, GWL_STYLE, dwStyle);

添加数据

1
2
3
4
5
6
7
HTREEITEM InsertItem( LPTVINSERTSTRUCT lpInsertStruct );

HTREEITEM InsertItem(UINT nMask, LPCTSTR lpszItem, int nImage, int nSelectedImage, UINT nState, UINT nStateMask, LPARAM lParam, HTREEITEM hParent, HTREEITEM hInsertAfter );

HTREEITEM InsertItem( LPCTSTR lpszItem, HTREEITEM hParent = TVI_ROOT, HTREEITEM hInsertAfter = TVI_LAST );

HTREEITEM InsertItem( LPCTSTR lpszItem, int nImage, int nSelectedImage, HTREEITEM hParent = TVI_ROOT, HTREEITEM hInsertAfter = TVI_LAST);

获取选中节点

1
HTREEITEM GetSelectedItem( );

相关内容

0%