动态创建好控件cbutton,我想在改变clistCtrl列宽的时候也动态改变cbtton的大小,代码是这样的:
oid CeditDlg::OnHdnItemchangingList1(NMHDR *pNMHDR, LRESULT *pResult)
{
.....
new_Rt.right = new_Rt.left + m_List.GetColumnWidth(0);
m_pEdit->MoveWindow(new_Rt,true);
tmpCt = new_Rt;
tmpCt.left = (tmpCt.right)*70/100;
pAddBtn->MoveWindow(tmpCt,true);
pAddBtn->SetRedraw(true);}
其中new_Rt是以获得单元格大小,我想让cbtton显示30%的比例在变化列宽的时候,谁给支招~~
oid CeditDlg::OnHdnItemchangingList1(NMHDR *pNMHDR, LRESULT *pResult)
{
.....
new_Rt.right = new_Rt.left + m_List.GetColumnWidth(0);
m_pEdit->MoveWindow(new_Rt,true);
tmpCt = new_Rt;
tmpCt.left = (tmpCt.right)*70/100;
pAddBtn->MoveWindow(tmpCt,true);
pAddBtn->SetRedraw(true);}
其中new_Rt是以获得单元格大小,我想让cbtton显示30%的比例在变化列宽的时候,谁给支招~~
解决方案 »
- char转byte
- msn space 上传图片控件右边框里面的那个缩略图控件如何做呀?
- ODBC delete问题
- *****如何给CEdit和CStatic设置字体?*****
- 从今天开始,再次拜师学艺.散分给前20位
- visual module工具哪里可以下载到?或者系统分析类的工具?
- VC里怎么使用花指令?
- 高分救命:用ADO如何读取ACCESS的备注型字段的值且显示在editctrl中?
- 如何在属性页的顶部同时加入菜单和工具栏(菜单在上面)?谢谢!附代码.
- 新手提问:我脑子现在极度不清醒,可是要完成进度,哪位大侠愿意代劳一下?
- 请问"宏展开中遇到意外的文件结束"的问题怎么解决?
- CRichEditView的问题。。
tmpCt.left = (tmpCt.right)*70/100;
左边的宽度 是右边的70%,那麽剩下的30%就是tmpCt所占用的空间,不好意思,刚才忘记说问题了,问题是,在执行这个OnHdnItemchangingList1函数的时候,按钮就不见了~,是被掩盖了,还是消失了?
假如我要改成
pAddBtn->MoveWindow(CRect(20,0,40,40),true);
pAddBtn->SetRedraw(true);
则完全可以显示,动态改变空间位置就不行吗?
void DeflateRect( SIZE size );
void DeflateRect( LPCRECT lpRect );
void DeflateRect( int l, int t, int r, int b );参数: x 指定缩小CRect的左和右边的单位数。
y 指定缩小CRect的上、下边的单位数。
size 一个指定缩小CRect的单位数的SIZE或CSize。cx值指定缩小左、右边的单位数,cy指定缩小上、下边的单位数。
lpRect 指向一个RECT结构或CRect,指定缩小每一边的单位数。
l 指定缩小CRect左边的单位数。
t 指定缩小CRect上边的单位数。
r 指定缩小CRect右边的单位数。
b 指定缩小CRect下边的单位数。 说明:
DeflateRect通过将CRect的边向其中心移动来缩小它。为了做到这一点,DeflateRect将单位数增加到矩形的左边和上边,从右边和下边减去单位数。DeflateRect的参数是有符号的值;正值缩小CRect,而负值则放大它。
前两个重载函数使CRect相对的两对边都缩小,因此CRect的总宽度减小了两倍x(或cx),总高度减小了两倍y(或cy)。其它两个重载函数使CRect的边相对独立的缩小。
哦,对头,你的是没错。可能是显示覆盖的问题,把“pAddBtn->SetRedraw(true); ”换成“pAddBtn->Invalidate()”。
都是int型的
执行tmpCt.left = (tmpCt.right)*70/100; 时
可能会出现数据丢失
tmpCt.top = 0;
tmpCt.right = new_Rt.right -new_Rt.left;
tmpCt.bottom = 21; pAddBtn->MoveWindow(tmpCt,true);//当时用pAddBtn->MoveWindow(tmpCt,true);不行是因为tmpCt是相对于m_list,而这里的button位置则是相对于cedit的
pAddBtn->SetRedraw(true);
}马上结贴