需设置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);
|
右键弹出菜单
新建一个菜单资源:
响应菜单消息:
- 打开类向导,在命令栏中找到List Control对应的ID
- 在右边的消息中,双击NM_RCLICK
- 添加代码
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( );
|