自适应对话框的背景位图&限制大小的对话框

 

这里介绍一下两个比较实用的功能,一个是位对话框绘制自适应的位图背景,随着对话框的变化位图背景能够改变,但是这里的位图效果是平铺效果,我目前还没找到怎么实现一个位图撑满整个对话框,随着变化位图进行拉伸这种效果,希望有知道的人告诉我一下,不过我会查找一下资料的,等到有最新的资料我会更新在这里,这里先介绍平铺效果,效果图如下:

虽然不是很好看,但是固定了对话框大小,设计了相对应的位图之后作为设计程序背景图还是可以的,哈哈,总算是一种技术;这里主要实现代码就下面的几行,这个函数onCtlColor是为控件绘制背景的,获取为对话框绘制背景的那一部分,重新绘制背景即可,这里重点关注利用位图作为画刷那一部分;然后CDC利用selectobject选中画刷,接着客户区绘制矩形即可,填充矩形呀~

HBRUSH CDemo1Dlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
{
	HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
	if (nCtlColor == CTLCOLOR_DLG)
	{
		CBrush brush;
		brush.CreatePatternBrush(&m_Bmp);//位图画刷~
		CRect clientRC;                                   //获取客户区
		GetClientRect(clientRC);
		pDC->SelectObject(&brush);             //选中画刷
		pDC->FillRect(clientRC, &brush);        //客户区绘制填充矩形
		return brush;
	}
	return hbr;
}

补充:如果一张图延伸为背景,则需要在paint中绘制,利用方法如下:

int CDemo1Dlg::drawBackGround(void)
{
	CDC* pDC=this->GetDC();
	CRect clientRC;
	GetClientRect(clientRC);
	CDC memDC;
	memDC.CreateCompatibleDC(pDC);
	memDC.SelectObject(m_Bmp);
	BITMAPINFO bmpinfo;
	m_Bmp.GetObject(sizeof(BITMAPINFO),&bmpinfo);
	int bmpcx=bmpinfo.bmiHeader.biWidth;
	int bmpcy=bmpinfo.bmiHeader.biHeight;
	pDC->StretchBlt(clientRC.left,clientRC.top,clientRC.Width(),clientRC.Height(),&memDC,0,0,bmpcx,bmpcy,SRCCOPY);
	return 0;
}

onPaint中调用此函数即可;在onCtlColor中写这部分没有用,onCtlColor函数中的pDC可能是绘制控件之前的,返回的画笔重新绘制控件就没有了,具体为什么不能再这个函数中进行位图伸缩绘制我也不知道其中原因,如果有谁知道可以告诉我~谢谢啦。

限制对话框的大小主要利用一个函数,如下:(The framework calls this member function whenever Windows needs to know the maximized position or dimensions, or the minimum or maximum tracking size.)这里利用tracking size;

afx_msg void OnGetMinMaxInfo( 
   MINMAXINFO* lpMMI  
);
typedef struct tagMINMAXINFO {
   POINT ptReserved;
   POINT ptMaxSize;      //最大窗口的宽度和大小
   POINT ptMaxPosition;  //最大窗口的左上角的坐标
   POINT ptMinTrackSize; //tracking size的最大边框大小
   POINT ptMaxTrackSize; //tracking size的最小边框大小
} MINMAXINFO;

设置跟踪一个对话框大小的代码如下:

void CDemo2Dlg::OnGetMinMaxInfo(MINMAXINFO FAR* lpMMI) 
{
	lpMMI->ptMaxTrackSize.x = lpMMI->ptMaxTrackSize.x > 400 ?  400: lpMMI->ptMaxTrackSize.x;
	lpMMI->ptMaxTrackSize.y = lpMMI->ptMaxTrackSize.y > 400 ?  400: lpMMI->ptMaxTrackSize.y;

	lpMMI->ptMinTrackSize.x = lpMMI->ptMinTrackSize.x < 200 ?  200: lpMMI->ptMinTrackSize.x;
	lpMMI->ptMinTrackSize.y = lpMMI->ptMinTrackSize.y < 200 ?  200: lpMMI->ptMinTrackSize.y;
	CDialog::OnGetMinMaxInfo(lpMMI);
}

两个简单而实用的技术;

转载于:https://www.cnblogs.com/weixliu/archive/2012/12/05/2802794.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
08-10
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值