MFC(十)窗口的放大和缩小

1.新增按钮,描述文字为缩小

2.在头文件里定义两个矩形类

    CRect m_small;
	CRect m_larger;
    afx_msg void OnBnClickedButtonLarger();

CRect 是一个类,主要用于表示一个矩形区域。它里面有一些关于长、宽的属性和方法

并且它会自动生成一个按钮函数

3.在OnInitDialog()函数里初始化窗口

BOOL CbingoDialog::OnInitDialog()
{
    GetWindowRect(m_larger);
	m_small = m_larger;
	m_small.right = m_small.left + m_small.Width() / 2;
	m_small.bottom = m_small.top + m_small.Height() / 2;
}

首先通过getwindowrect函数获取 m_larger 的矩形区域大小,然后将m_small初始化为larger,也可以不初始化,然后将它的有边界横坐标设置为左边界加上宽,即右边界横坐标,注意这里不是右下角横坐标,虽然值是一样的,,但是意义不同,bottom表示下边界纵坐标

4.在按钮点击函数里写代码

void CbingoDialog::OnBnClickedButtonLarger()
{
    CRect curRect;
	GetWindowRect(curRect);
	CWnd* pbutton = GetDlgItem(IDC_BUTTON_LARGER);
    CString strtitle;
	if (pbutton)
	{
		pbutton->GetWindowTextW(strtitle);
		if (strtitle==_T("放大")&&(m_larger.IsRectEmpty()==false))
		{
			pbutton->SetWindowTextW(_T("缩小"));
			SetWindowPos(NULL, curRect.left, curRect.top,
				m_larger.Width(), m_larger.Height(),
                 SWP_NOMOVE | SWP_NOZORDER);
		}

GetDlgItem 它用于获取指定对话框中的子窗口控件,isrectempty判断矩形是否为空矩形,如果不为空且按钮文字为放大,点击后则把文字改为缩小,并将窗口缩小,最开始窗口默认文字为放大,所以不会进入这个判断,会进入下面这个判断

else if (m_larger.IsRectEmpty() == false)
		{
			pbutton->SetWindowTextW(_T("放大"));
			CRect curRect;
			GetWindowRect(curRect);
			SetWindowPos(NULL, curRect.left, curRect.top,
				m_small.Width(), m_small.Height(),
                 SWP_NOMOVE | SWP_NOZORDER);
		}

 setwindowpos第一个参数为窗口的纵坐标,即是否覆盖其他窗口之上,最后一个参数SWP_NOMOVE表示不改变左上角坐标,SWP_NOZORDER设置此标志位时,窗口不受到 Z 轴次序的影响。即不管 Z 轴次序如何,窗口仍然维持原有的次序

SetWindowPos(&wndTopMost, curRect.left, curRect.top,
				m_small.Width(), m_small.Height(), SWP_NOMOVE);

 这里的wndTopMost 参数表示将当前窗口设置为置顶窗口

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MFC是Microsoft Foundation Classes的缩写,是一组用于开发Windows应用程序的C++类库。在使用MFC开发程序时,可以通过一些方法来显示图像,并实现放大缩小和滚动条等功能。 要显示图像,可以使用MFC中提供的CImage类,它能够加载和保存各种图片格式,并提供了一些图像处理的方法。首先,可以创建一个CImage对象,并使用其Load函数加载指定的图像文件。然后,可以使用CDC类的成员函数BitBlt将图像绘制到指定的设备上,例如窗口或对话框。 实现图像的放大缩小功能可以使用SetStretchBltMode函数和StretchBlt函数。SetStretchBltMode函数用于设置位图的拉伸模式,可以选择使用颜色保留或灰度拉伸模式。StretchBlt函数用于将图像按指定的比例放大缩小,并将结果绘制到指定的设备上,可以在窗口或对话框的OnPaint函数中调用这两个函数。 为了实现滚动条功能,可以使用MFC的CSliderCtrl类。首先,需要在对话框资源中添加一个滚动条控件,并设置其属性和消息处理函数。然后,在消息处理函数中,可以使用CSliderCtrl类的GetPos函数获取当前滚动条位置,并结合放大缩小的功能,改变图像的显示大小。 综上所述,通过使用MFC中的CImage类加载和显示图像,配合SetStretchBltMode和StretchBlt函数实现放大缩小功能,并结合CSliderCtrl类实现滚动条功能,就可以实现在MFC应用程序中显示图像,实现放大缩小和滚动条等功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值