
实现这些功能你需要派生CListCtrl类,新类名可定为CMyListCtrl;
然后派生他的NM_CLICK消息
afx_msg void OnClickMyList(NMHDR pNMHDR, LRESULT pResult);
ON_NOTIFY(NM_CLICK, IDC_MYLIST, &CDlgUPText::OnClickMyList)
在
void CDld::OnClickMyList(NMHDR pNMHDR, LRESULT pResult)
{
LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR);
// TODO: Add your control notification handler code here
int nItem = pNMItemActivate->iItem;
if ( nItem > -1 )
{
UINT Flag = 0;
m_ListCtrlHitTest( pNMItemActivate->ptAction, &Flag );
if ( Flag == LVHT_ONITEMSTATEICON )
{
bool bChecked = ListView_GetCheckState( m_ListCtrlm_hWnd,nItem );
if(!bChecked)
{// 勾选,设置整行选中状态
SetItemState( nItem , LVIS_SELECTED , LVIS_SELECTED );
}
else
{// 消除整行选中状态
SetItemState( nItem , 0, LVIS_SELECTED );
}
}
}
动态创建的和通过拖控件的CListCtrl一样,通过添加LVN_ITEMCHANGED消息响应,可以实现当前选中行的信息。如果是动态创建,IDC_LIST1是你动态创建的ListCtrl的ID。
ON_NOTIFY(LVN_ITEMCHANGED, IDC_LIST1, OnLvnItemchangedList1)
Updatedata( )调用时,参数如果是TRUE,则值从控件更新到变量,如果是FALSE,值从变量更新到控件。
如单击了check box控件后,控件会自己在选中与不选中间切换,但是变量值还没有变,所以在响应函数里要调用Updatedata(TRUE);才能让关联变量的值改变,就不用再代码m_bcheck= !m_bcheck;了。
而如果在代码里改了关联变量的值,想要更新到控件的显示上,就要调用Updatedata(FALSE);
首先在你自己的类中定义一个要使用这个控件的变量,比如:DlgFaceRecg
dlgFaceRecg;
//
CFROCXCtrl
消息处理程序
int
CFROCXCtrl::OnCreate(LPCREATESTRUCT
lpCreateStruct)
{
if
(COleControl::OnCreate(lpCreateStruct)
==
-1)
return
-1;
dlgFaceRecgCreate(IDD_DIALOG1,this);//这里可以用你的控件的IDC_XX
return
0;
}
1、为界面添加一个List Control控件。
2、更改这个控件的view属性为Report
3、为这个控件添加一个控制型变量 假设为m_ctlList;
4、在界面的初始化函数OnInitDialog()函数中初始化这个控件主要是插入列表的头,主要调用
int InsertColumn( int nCol, LPCTSTR lpszColumnHeading, int nFormat = LVCFMT_LEFT, int nWidth = -1, int nSubItem = -1 );这个函数。
其中 nCol是列的索引,从0开始 ;lpszColumnHeading 列的名称 ;nFormat 文字的摆放方式;nWidth 宽的度度。
如:
m_ctlListInsertColumn(0,"姓名",LVCFMT_CENTER,60);//第一列,名称为姓名,文字居中显示,列的宽度为60像素
m_ctlListInsertColumn(1,"性别",LVCFMT_CENTER,60);//第二列,名称为性别,文字居中显示,列的宽度为60像素
5在界面中添加一个“添加按钮”,在按钮的响应函数中向列表控件m_ctlList插入数据主要代码如下。
UpdateData(TRUE);//将界面的数据更新到对应的变量中
int count=m_ctlListGetItemCount();//获取当前存在的数据总量
m_ctlListInsertItem(count,"张三");//插入一行
m_ctlListSetItemText(count,1,"男");//改变列2的显示文字
以上就是关于MFC列表控件中的复选框响应问题全部的内容,包括:MFC列表控件中的复选框响应问题、mfc 动态创建的 CListCtrl 如何获取选中行的信息 要响应什么消息、MFC checkbox控件响应函数等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)