案例1创建不规则窗口

上传人:hs****ma 文档编号:590857974 上传时间:2024-09-15 格式:PPT 页数:18 大小:189KB
返回 下载 相关 举报
案例1创建不规则窗口_第1页
第1页 / 共18页
案例1创建不规则窗口_第2页
第2页 / 共18页
案例1创建不规则窗口_第3页
第3页 / 共18页
案例1创建不规则窗口_第4页
第4页 / 共18页
案例1创建不规则窗口_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《案例1创建不规则窗口》由会员分享,可在线阅读,更多相关《案例1创建不规则窗口(18页珍藏版)》请在金锄头文库上搜索。

1、成都信息工程学院 计算机学院案例1:创建不规则窗口张欢VC+程序设计成都信息工程学院 计算机学院需求n利用MFC创建的窗口都具有统一的风格n长时间使用同一种界面往往就会产生一些界面变化的需要2024/9/152VC+程序设计成都信息工程学院 计算机学院可行性nMFC没有为我们提供现成可用的圆形窗口、三角形窗口等2024/9/153VC+程序设计成都信息工程学院 计算机学院可行性nMFC没有为我们提供现成可用的圆形窗口、三角形窗口等n但是MFC的运行机制提供了按我们的想法修改窗口外观的手段2024/9/154VC+程序设计成都信息工程学院 计算机学院可行性nMFC为程序设计人员封装了原有的Win

2、dowsSDK,但是仍然保留了我们直接调用底层API函数的能力。n我们可以通过原有的API函数实现MFC没有为我们提供的功能2024/9/155VC+程序设计成都信息工程学院 计算机学院目标n创建一个椭圆形的窗口2024/9/156VC+程序设计成都信息工程学院 计算机学院手段n使用API函数SetWindowRgnn该函数将绘画和鼠标消息限定在一个指定的区域,实际上使窗口拥有了不规则的形状。2024/9/157VC+程序设计成都信息工程学院 计算机学院编程步骤(1)n使用AppWizard创建一个基于对话框的应用程序2024/9/158VC+程序设计成都信息工程学院 计算机学院CDialog

3、n对话框类nHeaderFile:Afxwin.h2024/9/159VC+程序设计成都信息工程学院 计算机学院CDialog:OnInitDialogn语法:nvirtual BOOL OnInitDialog( );nFramework调用这个函数来响应WM_INITDIALOG消息。n当执行Create,CreateIndirect,或者DoModal来产生对话框的时候n在即将显示出对话框时,WM_INITDIALOG消息会被发送给对话框2024/9/1510VC+程序设计成都信息工程学院 计算机学院CDialog:OnInitDialogn语法:nvirtual BOOL OnInit

4、Dialog( );nFramework调用这个函数来响应WM_INITDIALOG消息。n当执行Create,CreateIndirect,或者DoModal来产生对话框的时候n在即将显示出对话框时,WM_INITDIALOG消息会被发送给对话框n一般在这里做一些对话框的初始化操作2024/9/1511VC+程序设计成都信息工程学院 计算机学院CRgnnCRgn用于形成窗口的GDI(graphicsdeviceinterface)n形状是椭圆或者多边形nHeaderFileAfxwin.h2024/9/1512VC+程序设计成都信息工程学院 计算机学院CRgn:CreateEllipticR

5、gnnBOOLCreateEllipticRgn(intx1,inty1,intx2,inty2);n创建一个椭圆区域(x2,y2)(x1,y1)2024/9/1513VC+程序设计成都信息工程学院 计算机学院CRectnHeaderfile:Afxwin.hn与结构RECT很相似表示一个矩形区域ntypedefstructtagRECTnLONGleft;nLONGtop;nLONGright;nLONGbottom;nRECT;nCRect是class,封装了一些操作2024/9/1514VC+程序设计成都信息工程学院 计算机学院CWnd:GetClientRectnvoidGetClie

6、ntRect(LPRECTlpRect)const;nlpRect:n指向一个指向一个RECT结构或者一个结构或者一个CRect对象以获取对象以获取client(客户区)坐标(客户区)坐标2024/9/1515VC+程序设计成都信息工程学院 计算机学院API:SetWindowRgnnintSetWindowRgn(nHWND hWnd,/将要设置形状的窗口句柄nHRGN hRgn,/要设置的形状的句柄nBOOL bRedraw /是否重绘窗口n);2024/9/1516VC+程序设计成都信息工程学院 计算机学院编程步骤(2)n修改OnInitDialog函数n用CRgn的对象建立一个椭圆区域n调用SetWindowRgn将该区域指定给窗口n/GetsizeofdialognCRectrcDialog;nGetClientRect(rcDialog);n/CreateregionandassigntowindownCRgnrgn;nrgn.CreateEllipticRgn(0,0,rcDialog.Width(),rcDialog.Height();n:SetWindowRgn(GetSafeHwnd(),(HRGN)rgn,TRUE);2024/9/1517VC+程序设计成都信息工程学院 计算机学院效果2024/9/1518

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 医学/心理学 > 基础医学

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号