好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

案例1创建不规则窗口.ppt

18页
  • 卖家[上传人]:hs****ma
  • 文档编号:590857974
  • 上传时间:2024-09-15
  • 文档格式:PPT
  • 文档大小:189KB
  • / 18 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 成都信息工程学院 计算机学院 案例1:创建不规则窗口张欢 VC++程序设计成都信息工程学院 计算机学院 需求n利用MFC创建的窗口都具有统一的风格n长时间使用同一种界面往往就会产生一些界面变化的需要2024/9/152 VC++程序设计成都信息工程学院 计算机学院 可行性nMFC没有为我们提供现成可用的圆形窗口、三角形窗口等2024/9/153 VC++程序设计成都信息工程学院 计算机学院 可行性nMFC没有为我们提供现成可用的圆形窗口、三角形窗口等n但是MFC的运行机制提供了按我们的想法修改窗口外观的手段2024/9/154 VC++程序设计成都信息工程学院 计算机学院 可行性nMFC为程序设计人员封装了原有的Windows SDK,但是仍然保留了我们直接调用底层API函数的能力n我们可以通过原有的API函数实现MFC没有为我们提供的功能2024/9/155 VC++程序设计成都信息工程学院 计算机学院 目标n创建一个椭圆形的窗口2024/9/156 VC++程序设计成都信息工程学院 计算机学院 手段n使用API函数SetWindowRgnn该函数将绘画和鼠标消息限定在一个指定的区域,实际上使窗口拥有了不规则的形状。

      2024/9/157 VC++程序设计成都信息工程学院 计算机学院 编程步骤(1)n使用AppWizard创建一个基于对话框的应用程序2024/9/158 VC++程序设计成都信息工程学院 计算机学院 CDialogn对话框类nHeader File :Afxwin.h2024/9/159 VC++程序设计成都信息工程学院 计算机学院 CDialog::OnInitDialog n语法:nvirtual BOOL OnInitDialog( ); nFramework调用这个函数来响应WM_INITDIALOG 消息n当执行Create, CreateIndirect, 或者 DoModal 来产生对话框的时候n在即将显示出对话框时,WM_INITDIALOG消息会被发送给对话框2024/9/1510 VC++程序设计成都信息工程学院 计算机学院 CDialog::OnInitDialog n语法:nvirtual BOOL OnInitDialog( ); nFramework调用这个函数来响应WM_INITDIALOG 消息n当执行Create, CreateIndirect, 或者 DoModal 来产生对话框的时候n在即将显示出对话框时,WM_INITDIALOG消息会被发送给对话框n一般在这里做一些对话框的初始化操作2024/9/1511 VC++程序设计成都信息工程学院 计算机学院 CRgnnCRgn用于形成窗口的GDI(graphics device interface )n形状是椭圆或者多边形nHeader FileAfxwin.h2024/9/1512 VC++程序设计成都信息工程学院 计算机学院 CRgn::CreateEllipticRgn nBOOL CreateEllipticRgn( int x1, int y1, int x2, int y2 );n创建一个椭圆区域(x2,y2)(x1,y1)2024/9/1513 VC++程序设计成都信息工程学院 计算机学院 CRectnHeader file:Afxwin.hn与结构RECT很相似表示一个矩形区域ntypedef struct tagRECT {nLONG left;nLONG top;nLONG right;nLONG bottom;n} RECT; nCRect是class,封装了一些操作2024/9/1514 VC++程序设计成都信息工程学院 计算机学院 CWnd::GetClientRect  nvoid GetClientRect( LPRECT lpRect ) const;nlpRect::n指向一个指向一个RECT结构或者一个结构或者一个CRect对象以获取对象以获取client(客户区)坐标(客户区)坐标2024/9/1515 VC++程序设计成都信息工程学院 计算机学院 API:SetWindowRgn nint SetWindowRgn( nHWND hWnd,   // 将要设置形状的窗口句柄nHRGN hRgn,     // 要设置的形状的句柄nBOOL bRedraw // 是否重绘窗口n); 2024/9/1516 VC++程序设计成都信息工程学院 计算机学院 编程步骤(2)n修改OnInitDialog函数n用CRgn的对象建立一个椭圆区域n调用SetWindowRgn将该区域指定给窗口n// Get size of dialognCRect rcDialog;nGetClientRect(rcDialog);n// Create region and assign to windownCRgn rgn;nrgn.CreateEllipticRgn(0, 0, rcDialog.Width(), rcDialog.Height());n::SetWindowRgn(GetSafeHwnd(), (HRGN)rgn, TRUE);2024/9/1517 VC++程序设计成都信息工程学院 计算机学院 效果2024/9/1518 。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.