mfc设置半透明对话框
BOOL CDialog7::OnInitDialog()
{
CDialog::OnInitDialog(); // TODO: 在此添加额外的初始化 ::SetWindowLong(GetSafeHwnd(),GWL_EXSTYLE,::GetWindowLongPtr(GetSafeHwnd(),GWL_EXSTYLE)|WS_EX_LAYERED);
this->SetLayeredWindowAttributes(,(*)/,LWA_ALPHA); return TRUE; // return TRUE unless you set the focus to a control
// 异常: OCX 属性页应返回 FALSE
}

涉及到的函数如下:
1 SetWindowLong
2 GetSafeHwnd
3 GetWindowLongPtr
4 SetLayeredWindowAttributes
一、
LONG SetWindowLong(
HWND hWnd,
int nIndex,
LONG dwNewLong
);
SetWindowLong是一个Windows API函数。该函数用来改变指定窗口的属性.函数也将指定的一个32位值设置在窗口的额外存储空间的指定偏移位置。
hWnd 窗口句柄及间接给出的窗口所属的类。
nlndex
指定将设定的大于等于0的偏移值。有效值的范围从0到额外类的存储空间的字节数减4:例如若指定了12或多于12个字节的额外窗口存储空间,则应设索引位8来访问第三个4字节,同样设置0访问第一个4字节,4访问第二个4字节。要设置其他任何值,可以指定下面值之一:
|
常量 |
常量值 |
意义 |
|---|---|---|
|
GWL_EXSTYLE |
-20 |
设定一个新的扩展风格。 |
|
GWL_HINSTANCE |
-6 |
设置一个新的应用程序实例句柄。 |
|
GWL_ID |
-12 |
设置一个新的窗口标识符。 |
|
GWL_STYLE |
-16 |
设定一个新的窗口风格。 |
|
GWL_USERDATA |
-21 |
设置与窗口有关的32位值。每个窗口均有一个由创建该窗口的应用程序使用的32位值。 |
|
GWL_WNDPROC |
-4 |
为窗口设定一个新的处理函数。 |
| GWL_HWNDPARENT | -8 | 改变子窗口的父窗口,应使用SetParent函数。 |
当hWnd参数标识了一个对话框时,也可使用下列值:
|
常量 |
常量值 |
意义 |
|---|---|---|
|
DWL_DLGPROC |
DWLP_MSGRESULT + sizeof(LRESULT) (值:4) |
设置对话框过程的新地址。 |
|
DWL_MSGRESULT |
0 |
设置在对话框过程中处理的消息的返回值。 |
|
DWL_USER |
DWLP_DLGPROC + sizeof(DLGPROC) (值:8) |
设置的应用程序私有的新的额外信息,例如一个句柄或指针。 |
dwNewLong
指定的替换值。
dwNewLong中可以使用以下一些列表控件的专用风格:
LVS_ICON LVS_SMALLICON LVS_LIST LVS_REPORT
这四种风格决定控件的外观,同时只可以选择其中一种,分别对应:
大图标显示,小图标显示,列表显示,详细报表显示
LVS_EDITLABELS 结点的显示字符可以被编辑,对于报表风格来讲可编辑的只为第一列。
LVS_SHOWSELALWAYS 在失去焦点时也显示当前选中的结点
LVS_SINGLESEL 同时只能选中列表中一项
返回值
如果函数成功,返回值是指定的32位整数的原来的值。如果函数失败,返回值为0。若想获得更多错误信息,请调用GetLastError函数。
如果指定32位整数的原来的值为0,并且函数成功,则返回值为0,但是函数并不清除最后的错误信息,这就很难判断函数是否成功。这时,就应在调用SetWindowLong之前调用SetLastError(0)函数来清除最后的错误信息。这样,如果函数失败就会返回0,并且GetLastError。也返回一个非零值。
二、
GetSafeHwnd,计算机语言函数。用于得到窗口指针句柄。
四、
SetLayeredWindowAttributes
此函数用于设置分层窗口透明度,常和 UpdateLayeredWindow 函数结合使用。
BOOL SetLayeredWindowAttributes(
HWND hwnd, // 指定分层窗口句柄
COLORREF crKey, // 指定需要透明的背景颜色值,可用RGB()宏
BYTE bAlpha, // 设置透明度,0表示完全透明,255表示不透明
DWORD dwFlags // 透明方式
);
其中,dwFlags参数可取以下值:
LWA_ALPHA时:crKey参数无效,bAlpha参数有效;
LWA_COLORKEY:窗体中的所有颜色为crKey的地方将变为透明,bAlpha参数无效。
LWA_ALPHA | LWA_COLORKEY:crKey的地方将变为全透明,而其它地方根据bAlpha参数确定透明度。
mfc设置半透明对话框的更多相关文章
- 【MFC】半透明对话框(转)
原文转自 http://jingyan.baidu.com/article/656db918fd5b0ee381249ca1.html 在OnInitDialog()函数添加以下代码: //设置半透明 ...
- MFC 如何改变对话框按钮上的文字
原文地址:http://blog.163.com/wenxianliang08@126/blog/static/8358326320110300643282/ 什么是标记菜单 如何标记菜单 如何 ...
- MFC 如何改变对话框的默认背景颜色(转)
下面介绍三种方法:实现改变对话框的默认背景颜色: (1)可以在CLotteryApp::InitInstance()设置更新对话框的背景颜色 调用SetDialogBkColor(RG ...
- android 设置半透明
对于Button和ImageButton 还有一些View 设置半透明或者透明都是通过 android:background="#b0000000" 这是就是半透明 android ...
- MFC中模态对话框和非模态对话框的差别
在MFC中有模态对话框和非模态对话框,那这两种有什么差别呢. 又都是用于什么场合呢. 首先,要弄清楚2种对话框是怎样创建的. 然后要弄清楚2种对话框有什么差别,可能从表面上看,模态会堵塞主对话框.可原 ...
- MFC增强----任务对话框CTaskDialog类
/** 注意:从Windows Vista系统才开始支持CTaskDialog类,所以在使用时最好调用 CTaskDialog::IsSupported() 方法做判断 同时:CTaskDialog类 ...
- [原]MFC中DIALOG(对话框)程序响应加速键(快捷键)
[原]MFC中DIALOG(对话框)程序响应加速键(快捷键) 2014-8-6阅读266 评论0 新建一个对话框程序,项目名为Test,删除默认确定,取消和静态文本框控件.添加一个按钮,Caption ...
- MFC中文件对话框类CFileDialog详解及文件过滤器说明
当前位置 : 首页 » 文章分类 : 开发 » MFC中文件对话框类CFileDialog详解及文件过滤器说明 上一篇 利用OpenCV从摄像头获得图像的坐标原点是在左下角 下一篇 Word中为 ...
- Android控件设置半透明+EditText设置默认值+ 控件居中
Android控件设置半透明 效果 代码: android:background="#50FFFFFF" 50表示50%透明 Android:EditText设置默认值 andro ...
随机推荐
- 从SOA到BFV【普元的一份广告文章】
人类对美好生活的追求是一切技术进步的原动力. 简便.快捷.联结……,这些移动互联的价值让它正成为最贴近消费者的力量.人和设备,设备和设备,人和服务,人和企业,企业和企业都发生了连接.诸如微信.携程.大 ...
- Invalid regular expression: unmatched parentheses
Unmatched ) in Javascript regular expression您的某些字符串包含错误')'.你需要逃避这个.这是这样做的功能: function escapeRegExp(s ...
- 【Todo】一些scala的实验 & 与Java的混合
另外,如果要支持 java 和 scala混合build,可以看看这篇文章: http://www.cnblogs.com/yjmyzz/p/4694219.html Scala和Java实现Word ...
- linux驱动开发流程
嵌入式linux驱动开发流程嵌入式系统中,操作系统是通过各种驱动程序来驾驭硬件设备的.设备驱动程序是操作系统内核和硬件设备之间的接口,它为应用程序屏蔽了硬件的细节,这样在应用程序看来,硬件设备只是一个 ...
- UVA - 11178-Morley’s Theorem
就是给出一个等边三角形的三个顶点坐标 然后每一个角的三等分线会交错成一个三角形,求出这个三角形的顶点坐标 一開始.我题意理解错了--还以为是随意三角形,所以代码可以处理随意三角形的情况 我的做法: 通 ...
- invlpg 指令简单介绍
invlpg 指令简单介绍 void tlb_invalidate(pde_t *pgdir, void *va) { // Flush the entry only if we're modifyi ...
- android-problem——remount of /system failed: Read-only file system
adb remount后仍旧不能对system进行读写.需要进行adb disable-verity 在Android6.0 (Android M)userdebug版本上(eng版本不存在该问题), ...
- 基于SpringMVC框架使用ECharts3.0实现折线图,柱状图,饼状图,的绘制(上篇)
页面部分 <%@ page language="java" pageEncoding="UTF-8"%> <!DOCTYPE html> ...
- 最简单的基于FFmpeg的AVDevice样例(读取摄像头)
=====================================================最简单的基于FFmpeg的AVDevice样例文章列表: 最简单的基于FFmpeg的AVDev ...
- 判断IPv6地址合法性
在 <netinet/in.h> 头文件下有下列这些宏用于判断IPv6地址合法性 返回0代表true,返回非零值代表ipv6地址为非指定类型的的地址(false) int IN6_IS_A ...