DoubleLi

qq: 517712484 wx: ldbgliet

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

Introduction

This class is derived from the MFC CDialog. It supports the following features :-

  1. If running on Windows 2000 or Windows XP, make any one color transparent so that you can see through regions of the dialog
  2. If running on Windows 2000 or Windows XP, make the whole dialog translucent
  3. Adding a bitmap to the back ground. The bitmap can be a resource, a BMP file, or a HBITMAP
  4. Set style for background : Tile, Center, Stretch, resize dialog to the size of the bitmap
  5. Can enable/disable moving the dialog by clicking anywhere in it

Previous to Windows 2000 creating skinned dialogs were a bit difficult. You needed to write functions that could parse through the back ground image and create a CRgn that defined the shape of the skin. This could be done using repetitive calls to CRgn::CombineRgn for part of the image you wanted to see on the dialog. After creating the whole region you need to call CWnd::SetWindowRgn with a handle to the combined CRgn object.

From Windows 2000 a new API SetLayeredWindowAttributes  has been added to User32.dll. This class uses that to create skinned dialogs. However the background bitmap feature is not dependent on OS version and can be used on any version of Windows.

 

 

reference:http://www.codeproject.com/Articles/4509/CDialogSK-A-Skinnable-Dialog-Class

posted on 2013-11-19 17:48  DoubleLi  阅读(520)  评论(0编辑  收藏  举报