MFC中list control控件设置

来源:互联网 发布:怎样切换3g 4g网络 编辑:程序博客网 时间:2024/05/18 03:32
原创地址:http://xueyingzhifeng.blog.163.com/blog/static/8075415820104248238770/
 
vs2008,MFC编程
界面控件,list control、edit control、button control、IP control
添加控件后可在属性中更改ID与名称,双击可自动生成控件通知处理程序成员函数。使用时,首先应定义变量,并与控件关联:
CString   m_text;
CListCtrl  m_list;
CIPAddressCtrl  m_IPAddressCtrl;
在DoDataExchange(CDataExchange* pDX)中设置关联
DDX_Text(pDX, IDC_EDITCONTRL, m_text);//当前已打开视频数--m_strnumber
DDX_Control(pDX, IDC_LIST,m_list);//list
DDX_Control(pDX, IDC_IPADDRESS, m_IPAddressCtrl);
然后就可以进行一些操作了
1、edit control
int i=100;
m_text.Format("%d",i);//显示
UpdateData(FALSE);

UpdateData(true); CString s; s=m_text.GetString();//输入字符串
/**************************/
2、IP control
UpdateData(true);
unsigned char *pIP; DWORD dwIP; m_IPAddressCtrl.GetAddress(dwIP); prIP = (unsigned char*)&dwrIP;
CString IP; IP.Format("%u.%u.%u.%u",*(pCenterIP+3),*(pCenterIP+2),*(pCenterIP+1),*pCenterIP);

3、list control

    //设置list control风格
    DWORD dwStyle = m_list.GetExtendedStyle();
    dwStyle |= LVS_EX_FULLROWSELECT;//选中某行使整行高亮(只适用与report风格的listctrl)
    dwStyle |= LVS_EX_GRIDLINES;//网格线(只适用与report风格的listctrl)
    dwStyle |= LVS_EX_CHECKBOXES;//item前生成checkbox控件
    m_list.SetExtendedStyle(dwStyle); //设置扩展风格

//插入表头
m_list.InsertColumn(0, _T("序号"), LVCFMT_LEFT, 70 );//添加列,用于显示序号
m_list.InsertColumn(2,_T("IP"),LVCFMT_LEFT,150);//添加列用于显示IP地址
//插入行—数据项
m_list.InsertItem(i, _T(""));     //每一行的开始使用此函数。
m_list.SetItemText(i,2, CurrentIP);//显示当前“IP地址”

//删除所有数据

m_list.DeleteAllItems();


//利用NM_CUSTOMDRAW还可以对指定行重绘
定义方法:
afx_msg void OnCustomdrawMyList(NMHDR *pNMHDR, LRESULT *pResult);
设置关联(BEGIN_MESSAGE_MAP中):
ON_NOTIFY(NM_CUSTOMDRAW, IDC_LIST, &CMyDlg::OnCustomdrawMyList)
实现代码:

void CMyDlg::OnCustomdrawMyList(NMHDR *pNMHDR, LRESULT *pResult)
{

NMLVCUSTOMDRAW* pLVCD = reinterpret_cast<NMLVCUSTOMDRAW*>( pNMHDR );
 
*pResult = CDRF_DODEFAULT;
if ( CDDS_PREPAINT == pLVCD->nmcd.dwDrawStage )
{
*pResult = CDRF_NOTIFYITEMDRAW;
}

else if ( CDDS_ITEMPREPAINT == pLVCD->nmcd.dwDrawStage )
{
if ( repaint )
{
COLORREF crText;

crText = RGB(255,0,0);  
pLVCD->clrText = crText;}
*pResult = CDRF_DODEFAULT;
}

}
//然后可以在需要的地方设置标志repaint,并重绘某些行
repaint=true;m_list.RedrawItems(i, i);UpdateWindow();
这样第i行就被重绘成红色。

/*************************************************************************************/
BEGIN_MESSAGE_MAP(CMyDlg, CDialog)
///
//
//
END_MESSAGE_MAP()
中设置关联控件通知处理函数与控件ID,这样,控件相关状态改变就能出发相应程序,比如:
ON_BN_CLICKED(IDCANCEL, &CMyDlg::OnBnClickedCancel)
当按下ID号为IDCANCEL的button时,就触发CMyDlg::OnBnClickedCancel()这个函数。

 

原创粉丝点击