MFC列表控件中的复选框响应问题

MFC列表控件中的复选框响应问题,第1张

实现这些功能你需要派生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)

先要在DataExchange函数里确保变量已经关联上。

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控件响应函数等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/10214282.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-06
下一篇2023-05-06

发表评论

登录后才能评论

评论列表(0条)

    保存