介绍 这个类派生自MFC CDialog。它支持以下特性 : - 如果运行在视窗2000或视窗XP上,使任何一种颜色透明 如果在Windows 2000或Windows XP上运行,你可以通过对话框的区域看到整个对话框,添加一个位图到背景,使整个对话框半透明。位图可以是一个资源,一个BMP 文件,或HBITMAP设置的背景样式:平铺,居中,拉伸,调整对话框的大小 位图的大小可以通过点击对话框中的任何位置来启用/禁用移动对话框 在Windows 2000之前,创建蒙皮对话框有点困难。你 需要编写能够解析后台映像的函数 创建定义皮肤形状的CRgn。这可以用 重复呼叫CRgn::CombineRgn为你的形象的一部分 想看对话中的内容。在创建整个区域之后,需要使用对的句柄调用CWnd::SetWindowRgn 结合CRgn 对象。 从Windows 2000一个新的API SetLayeredWindowAttributes 已添加到User32.dll。这 类使用它创建蒙皮的对话框。然而背景位图功能 不依赖于操作系统版本,可以在任何版本的Windows上使用。 使用的代码 可以按照以下步骤使用该类 将文件CDialogSK.h和CDialogSK.cpp添加到项目中。在对话框类的.h文件中包含CDialog .h,将所有出现的“CDialog”替换为 在。h和。cpp文件中的“CDialogSK”,如果你打算使用背景图像(位图)到对话框属性, 样式标签和make Style=Popup, Border=None,并取消勾选“Title” 栏”复选框。在对话类的OnInitDialog的末尾添加适当的调用 方法在CDialogSK 隐藏,复制CodeBOOL CSkinDialog_DemoDlg: OnInitDialog () { … EnableEasyMove ();//启用移动对话框 //点击对话框中的任何地方 SetBitmap (IDB_BACKGROUND);//设置背景位图 SetStyle (LO_RESIZE);//将对话框调整为位图的大小 255年SetTransparentColor (RGB (0, 0));//设置绿色为 / /透明色 返回TRUE; } 如果您想稍后更改窗口样式,您可以调用其中任何一个 在运行时在代码中的任何位置调用。 例如,如果你想做一个圆形对话框。创建一个在绿色背景上有一个蓝色圆圈的图像。 然后调用带有图像路径的SetBitmap,并调用SetTransparentColor 传递背景颜色(绿色)。这将删除背景 从视图上看,你会得到一个圆形窗口。 方法 以下方法出现在CDialogSK类中 DWORD SetBitmap (HBITMAP);属性设置背景位图 HBITMAP。DWORD SetBitmap (int nBitmap);基于资源ID设置背景位图。基于Windows位图(.bmp)文件设置背景位图。设置样式(LayOutStyle);设置位图布局样式。可以是LO_DEFAULT, LO_TILE(平铺图像), LO_CENTER(中心图像),LO_STRETCH(拉伸图像以适应对话框),LO_RESIZE (调整对话框大小以适应图像)。void EnableEasyMove (BOOL pEnable = TRUE);如果调用为TRUE,那么您可以通过单击对话框中的任何位置来移动对话框 对话框的客户区域。BOOL SetTransparent (BYTE bAlpha);使对话框作为一个整体透明。范围为0(透明)- 255 (不透明的)。这只工作在Windows2000及以上(WinXP)。(COLORREF col, BOOL bTrans = TRUE);使一个特定的颜色透明。这只在Windows2000和 以上(WinXP)。这可以用来创建您可以看到的对话框 通过对话的部分内容 历史 这是最初的版本。发布日期:2003年7月1日 本文转载于:http://www.diyabc.com/frontweb/news11932.html