关闭

CDialogSK---一个支持皮肤化的对话框类

标签: mfcborder平台byte
4643人阅读 评论(1) 收藏 举报
分类:

CDialogSK---一个支持皮肤化的对话框类

一、介绍
该类从MFC的CDialog继承而来,支持如下特征:
1、运行于win2000或者winxp平台上,可以使用任何透明色以透视对话框的区域。
2、运行于win2000或者winxp平台上,可以使得整个对话框透明。
3、使用位图背景。位图可以来自资源文件、bmp或者HBITMAP
4、设置背景类型:标题、中心、伸缩;设置对话框的大小适合位图的大小
5、可以点击对话框的任何部分允许/禁止移动对话框

二、用法
使用该类的方法如下:
1、往工程中加入文件CDialogSK.h和CDialog.cpp
2、在你的对话框类中包含CDialogSD.h
3、在你的对话框类中用CDialogSK代替所有的CDialog
4、如果要使用背景图片,找到对话框属性的类型选项,使得Style=Popup,

Border=None,并使Title Bar为未选择状态。
5、在你的对话框类的OnInitDialog的结尾处,加入CDialogSK属性方法的调用:
BOOL CSkinDialog_DemoDlg::OnInitDialog()
{
    ...
    EnableEasyMove();                       // 允许移动
    SetBitmap (IDB_BACKGROUND);             //设置背景位图
    SetStyle (LO_RESIZE);                   // 使对话框大小适合位图大小
    SetTransparentColor(RGB(0, 255, 0));    //设置透明色为绿色

    return TRUE;
}
6、例如,假如你想生成一个圆形的对话框,可以创建一个图片,背景为绿,画一个蓝色的圆。然后,调用SetBitmap,参数为图像的路径,调用SetTransparentColor,参数为背景的颜色(绿色)。这样就看不到背景,得到一给圆形的窗口。

三、方法
CDialogSK类提供如下的方法:
1、DWORD SetBitmap (HBITMAP hBitmap);
2、DWORD SetBitmap (int nBitmap);
3、DWORD SetBitmap (LPCTSTR lpszFileName);
4、void SetStyle (LayOutStyle style);
LO_DEFAULT, LO_TILE (标题图片), LO_CENTER (中心图片), LO_STRETCH (伸缩

图片以适合对话框大小), or LO_RESIZE (伸缩对话框适合图片).
5、void EnableEasyMove (BOOL pEnable = TRUE);
6、BOOL SetTransparent (BYTE bAlpha);
使整个对话框透明,范围为0(透明)-255(不透明)。只适合win2000及以上版


7、BOOL SetTransparentColor (COLORREF col, BOOL bTrans = TRUE);
指定透明色。只适合win2000及以上版本。

CDialogSK类文件下载地址http://www.codeguru.com/code/legacy/dialog/CDialogSK_src.zip

0
0
查看评论

CDialogSK---一个支持皮肤化的对话框类(转)

转自:http://blog.csdn.net/wqvbjhc/article/details/6445356 无意中在网上看到一个对话框类CDialogSK---一个支持皮肤化的对话框类,颇感兴趣 先看下CDialogSK是干什么的:(以下内容来...
  • luoluoqiqiqi
  • luoluoqiqiqi
  • 2014-01-09 10:50
  • 388

为已有的MFC对话框程序换肤

第一步、   在stdafx.h文档中包含头文件  // stdafx.h ...... #include 复制代码 第二步、   将对话框类的父类改为CBCGPDialog,也可以采取简便的方法: // BCGTes...
  • zang141588761
  • zang141588761
  • 2016-03-08 09:04
  • 1389

MFC基于对话框程序界面之皮肤美化(Skin Magic)--附案例源码

由于项目原因,需要对MFC界面进行美化,然后问大叔和度娘要了相关资源,以下主要是从实用角度介绍Skin Magic这个皮肤的其中一种用法。 资源列表如下(楼主自己看了,觉得比较重要的两个)。 1. http://blog.csdn.net/robinvanpersie/article/det...
  • CImage
  • CImage
  • 2013-09-16 23:59
  • 4229

<MFC>创建对话框和新建对话框类

参考资料:《鸡啄米的IT博客》VS2010/MFC编程入门教程之目录和总结 http://www.jizhuomi.com/software/257.html 创建对话框主要分两大步, 第一,创建对话框资源,主要包括创建新的对话框模板、设置对话框属性和为对话框添加各种控件; ...
  • xieziwei2008
  • xieziwei2008
  • 2013-10-16 16:07
  • 2351

VS2005下手动添加的对话框如…

原文地址:VS2005下手动添加的对话框如何增加OnInitDialog函数作者:cranboy 在VS2005中,用MFC向导创建的对话框会自动生成OnInitDialog()函数。但是手动添加的对话框或者创建子对话框时就不会生成OnInitDialog()。在消息栏里也没有WM_INITDIAL...
  • linzi0
  • linzi0
  • 2014-04-01 14:49
  • 930

QT自定义无边框界面和更换界面皮肤的实现

先上几张图: 核心处理部分:1:无边框窗体处理对标题栏安装eventFilter事件监听器监听鼠标双击事件,重载mouseMoveEvent、mousePressEvent、mouseReleaseEvent三个事件实现鼠标拖动,当窗体改变大小后还必须用QRect location;来记住当前窗体...
  • ZuoYueXian
  • ZuoYueXian
  • 2017-07-06 15:05
  • 610

DevExpress vcl 动态调用皮肤

dxSkinController可以在运行时动态调入皮肤,不用在设计期Use一大堆皮肤文件。 把要用的皮肤用Skin Editor编辑一个SkinRes后缀的文件,然后在程序中动态调入就可以了。 uses dxSkinsDefaultPainters; procedure TForm1...
  • QQ56430204
  • QQ56430204
  • 2017-01-21 21:14
  • 430

MFC View类对话框类之间指针的相互获取

这里主要是总结一下我自己用到过的不同类之间指针的获取方法: 1.基于对话框的应用程序,通过菜单命令来显示一个模态对话框: 该模态对话框如何获取主对话框的指针,在模态对话框类需要调用主对话框处添加如下代码: CVersionManageDlg *m_dlg=(CVersionMana...
  • zhonglixianyun
  • zhonglixianyun
  • 2017-07-31 19:13
  • 469

mfc:单文档中对话框类调用视图类和框架类成员变量的实例

建立一个单文档mfc程序,设计一个菜单按钮,可以弹出一个对话框。在对话框中使用视图类和框架类中的变量。 界面如下对话框图:框架类的成员变量index:视图类的成员变量m_str:button1的响应函数//选择下拉列表的一项,在编辑框中显示出来。其中用到index和m_str void CDial...
  • tywwwww
  • tywwwww
  • 2017-02-16 22:53
  • 955

ClassView找不到对话框类的解决方法

<br />我用VC++6.0编的基于对话框的程序,默认添加了一个对话框类,可是操作过程中就找不到那个对话框类了,但MFC  ClassWizard 还是有那个对话框类。我多次出现这个问题,一直不知道什么原因。<br />   ...
  • ruifangcui7758
  • ruifangcui7758
  • 2010-10-18 14:13
  • 882
    个人资料
    • 访问:536097次
    • 积分:7133
    • 等级:
    • 排名:第3785名
    • 原创:173篇
    • 转载:4篇
    • 译文:2篇
    • 评论:187条
    最新评论