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();
}
{
// 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();
}
解决方案 »
- 请问,MFC中如何判断当前窗口是否最小化呢?
- 可执行文件exe,如何包含html,jpg等文件
- 急,谁有可以显示 ListCtrl 的一个列表子项的提示的源码?
- 如何在数据库内存放bmp,mp3,wave等复杂类型的数据啊,要使用ADO
- edit 和spin的问题。
- 请问在VC中有命令可以将一个数据库的一个表导到另外一个数据库中吗?
- 问来问去,也没问出个所以然来。干脆再简化一下问题吧。
- 简单分析SPI防火墙的实现(1)
- 能否返回BITMAPFILEHEADER** ppBmfh指针
- Unhandled exception in xx.exe:0xC0000005:Access Violation
- com组件的事件调用
- 不知道该不该问,一狠心,问吧
HWND hWnd, // handle to window
int X, // horizontal position
int Y, // vertical position
int nWidth, // width
int nHeight, // height
BOOL bRepaint // repaint option
);