单文档下List控件的添加及随窗口大小变化而变化的实现

一.创建List控件

参考:http://blog.sina.com.cn/s/blog_5f30147a0100dzgx.html ()

1.MyView视图类添加CListCtrl对象成员变量

CListCtrl m_List;


2.资源视图中打开String Table资源,在右键菜单中选择new string,为将要创建的ListControl控件添加资源编号:

IDC_LISTCONTROL


3.为创建和显示控件,在视图的初始化消息函数中添加如下代码:

void CMyView::OnInitialUpdate()
    {
       CView::OnInitialUpdate(); 
       // TODO: Add your specialized code here and/or call the base class

     

	CRect Workrect;
	GetClientRect(&Workrect);
	m_List.Create( LVS_REPORT,Workrect,this,IDC_LISTCONTROL);
	m_List.ModifyStyle(0,LVS_REPORT|LVS_SHOWSELALWAYS|LVS_SORTASCENDING);
	m_List.SendMessage(LVM_SETEXTENDEDLISTVIEWSTYLE,0,LVS_EX_GRIDLINES|LVS_EX_FULLROWSELECT|LVS_EX_CHECKBOXES);
	m_List.ShowWindow(SW_SHOW);
	
	CRect rect;
	m_List.GetClientRect(&rect);
	int nColumnWidth = rect.Width()/3;
	
	m_List.InsertColumn(0, _T("Title1"), LVCFMT_LEFT, nColumnWidth);
	m_List.InsertColumn(1, _T("Title2"), LVCFMT_LEFT, nColumnWidth);
	m_List.InsertColumn(2, _T("Title3"), LVCFMT_LEFT, nColumnWidth);
	
	m_List.InsertItem(0,"name0");
	m_List.SetItemText(0,1,"value0_1");
	m_List.SetItemText(0,2,"value0_1");
	m_List.InsertItem(1,"name1");
	m_List.SetItemText(1,1,"value1_1");
	m_List.SetItemText(1,2,"value1_1");

 

}

 二.List控件随单文档大小变化而变化

参考:http://blog.csdn.net/k642311153/article/details/7938236

1.首先,在View视图的派生类中添加成员变量m_rect:

CRect m_rect;  


2.然后,在相应的cpp文件中的OnInitialUpdate()函数中对m_rect进行初始化:

GetClientRect (&m_rect);


3.接下来,在CMyView类中对消息WM_SIZE进行响应并添加消息处理函数OnSize(),而控件的变化在消息处理函数中进行:
void CMyView::OnSize(UINT nType, int cx, int cy)  

            CView::OnSize(nType, cx, cy);

      CWnd *pWnd; 
	pWnd = GetDlgItem(IDC_LISTCONTROL);     //获取控件句柄 
	if(pWnd)//判断是否为空, 
	{ 
		CRect rect;   //获取控件变化前大小 
		pWnd->GetWindowRect(&rect); 
		ScreenToClient(&rect);//将控件大小转换为单文档中的区域坐标 
		rect.left=rect.left*cx/m_rect.Width();/**//调整控件大小 
		rect.right=rect.right*cx/m_rect.Width(); 
		rect.top=rect.top*cy/m_rect.Height(); 
		rect.bottom=rect.bottom*cy/m_rect.Height(); 
		//这里对List控件的每一列的宽度同时进行了调整:
		m_List.SetColumnWidth(0,rect.Width()/3);
		m_List.SetColumnWidth(1,rect.Width()/3);
		m_List.SetColumnWidth(2,rect.Width()/3);

		pWnd->MoveWindow(rect);//设置控件大小 
	} 
	GetClientRect(&m_rect);//将变化后的大小设为旧大小 


 

}

 


 

 

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值