如何表格随着对话框大小改变而改变
我在一个对话框上制作了一张表格,代码如下,在oncreat中完成
int CCDDlg::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CDialog::OnCreate(lpCreateStruct) == -1)
return -1;
m_list.Create(
WS_CHILD|WS_VISIBLE|WS_BORDER|LVS_REPORT|LVS_EX_GRIDLINES, CRect(10,50,600,200), this, 1);
DWORD dwStyle = m_list.GetExtendedStyle();
dwStyle |= LVS_EX_FULLROWSELECT; //选中某行使整行高亮(只适用与report风格的listctrl)
dwStyle |= LVS_EX_GRIDLINES; //网格线(只适用与report风格的listctrl)
dwStyle |= LVS_EX_CHECKBOXES; //item前生成checkbox控件
//dwStyle |= LVS_SHOWSELALWAYS ;
m_list.SetExtendedStyle(dwStyle); //设置扩展风格
m_list.InsertColumn( 0, "地点", LVCFMT_CENTER , 100 );//插入列
m_list.InsertColumn( 1, "温度", LVCFMT_CENTER, 100 );
m_list.InsertColumn( 2, "温差", LVCFMT_CENTER, 100 );
m_list.InsertColumn( 3, "楼层", LVCFMT_CENTER, 100 );
m_list.InsertColumn( 4, "楼层图", LVCFMT_CENTER, 100 );
m_list.InsertColumn( 5, "温度曲线", LVCFMT_CENTER, 100 );
GetClientRect(&m_rect);
return 0;
}
现在对话框设置未可变动的,我想问下,如何使得我设置的列表的矩形范围随着对话框的变动而变动呢。
也就是m_list.Create(
WS_CHILD|WS_VISIBLE|WS_BORDER|LVS_REPORT|LVS_EX_GRIDLINES, CRect(10,50,600,200), this, 1);
中的CRect()中的参数要如何设置。希望有类似经验的朋友能提供点思路,小弟在这里叩头了~~
[解决办法]
响应dlg的WM_SIZE消息,在消息处理函数中用MoveWindow调整表格的位置和大小
[解决办法]
这样修改
m_list.Create(
WS_CHILD|WS_VISIBLE|WS_BORDER|LVS_REPORT|LVS_EX_GRIDLINES, CRect(0,0,0,0), this, 1);
响应dlg的WM_SIZE消息,在消息处理函数OnSize()里面
{CRect rc,rListCell;
GetClientRect(rc);//获取整个对话框大小
rListCell = rc;//这个是将整个对话框的大小传给列表框
m.list.movewindow(rlistCell);
}