请问怎么在动态的改变FormView中的控件的大小?

pony_utc 2002-04-08 05:30:53
请问怎么在动态的改变FormView中的控件的大小?
...全文
112 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
eastrock 2002-04-09
  • 打赏
  • 举报
回复
BOOL MoveWindow(
HWND hWnd, // handle to window
int X, // horizontal position
int Y, // vertical position
int nWidth, // width
int nHeight, // height
BOOL bRepaint // repaint option
);
rovoboy 2002-04-09
  • 打赏
  • 举报
回复
查收
csaotime 2002-04-08
  • 打赏
  • 举报
回复
To rovoboy(雪花满天) :

能否给偶一个例子,我的邮箱:csaotime@21cn.com
rovoboy 2002-04-08
  • 打赏
  • 举报
回复
class CMainPic : public CDialog
{
// Construction
public:
struct CtrlPlace
{
CWnd *pCtrlWnd;
WINDOWPLACEMENT WP;
int Font;
bool IsValied;
}m_CtrlPlace[500];
CMyLineCtrl m_LineCtrl[41];
CMyLineCtrl m_BorderCtrl[51];
CMySignCtrl m_SignCtrl[51];
CMySignCtrl m_WindingCtrl[61];
CMySwitchCtrl m_SwitchCtrl[21];
//这些都是我的自绘控件

};



BOOL CMainPic::OnInitDialog()
{
CDialog::OnInitDialog();


//记录所有控件位置
for(i=0;i<=30;i++)
{
m_LineCtrl[i].GetWindowPlacement(&m_CtrlPlace[i+10].WP);
m_CtrlPlace[i+10].pCtrlWnd=&m_LineCtrl[i];
m_CtrlPlace[i+10].IsValied=true;
m_CtrlPlace[i+10].Font=0;
}
for(i=0;i<=40;i++)
{
m_SignCtrl[i].GetWindowPlacement(&m_CtrlPlace[i+50].WP);
m_CtrlPlace[i+50].pCtrlWnd=&m_SignCtrl[i];
m_CtrlPlace[i+50].IsValied=true;
m_CtrlPlace[i+50].Font=0;
}
for(i=0;i<=15;i++)
{
m_SwitchCtrl[i].GetWindowPlacement(&m_CtrlPlace[i+100].WP);
m_CtrlPlace[i+100].pCtrlWnd=&m_SwitchCtrl[i];
m_CtrlPlace[i+100].IsValied=true;
m_CtrlPlace[i+100].Font=0;
}
for(i=0;i<=60;i++)
{
m_WindingCtrl[i].GetWindowPlacement(&m_CtrlPlace[i+130].WP);
m_CtrlPlace[i+130].pCtrlWnd=&m_WindingCtrl[i];
m_CtrlPlace[i+130].IsValied=true;
m_CtrlPlace[i+130].Font=0;
}
for(i=0;i<=80;i++)
{
m_LabelCtrl[i].GetWindowPlacement(&m_CtrlPlace[i+200].WP);
m_CtrlPlace[i+200].pCtrlWnd=&m_LabelCtrl[i];
m_CtrlPlace[i+200].IsValied=true;
m_CtrlPlace[i+200].Font=m_LabelCtrl[i].GetFontSize();
}
for(i=0;i<=50;i++)
{
m_BorderCtrl[i].GetWindowPlacement(&m_CtrlPlace[i+300].WP);
m_CtrlPlace[i+300].pCtrlWnd=&m_BorderCtrl[i];
m_CtrlPlace[i+300].IsValied=true;
m_CtrlPlace[i+300].Font=0;
}
Zoom(2);
}

void CMainPic::Zoom(float Zoom)
{
int i;
if (Zoom!=0)
{
m_nZoom/=Zoom;
if(m_nZoom<=0.48||m_nZoom>=2)
{
m_nZoom*=Zoom;
return;
}
}
else
{
m_nZoom=0.5;
}
WINDOWPLACEMENT wp;
Invalidate(false);
for(i=0;i<=500;i++)
{
if(m_CtrlPlace[i].IsValied)
{
wp=m_CtrlPlace[i].WP;
wp.rcNormalPosition.left*=m_nZoom;
wp.rcNormalPosition.right*=m_nZoom;
wp.rcNormalPosition.top*=m_nZoom;
wp.rcNormalPosition.bottom*=m_nZoom;
m_CtrlPlace[i].pCtrlWnd->
SetWindowPlacement(&wp);
if(m_CtrlPlace[i].Font!=0)
((CLabel*)m_CtrlPlace[i].pCtrlWnd)->
SetFontSize(m_CtrlPlace[i].Font*m_nZoom);
}
}

Invalidate();
}
z_yheart 2002-04-08
  • 打赏
  • 举报
回复
用控件的MoveWindow()方法

16,548

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧