Windows界面编程(2) 半透明窗体

上一篇《Windows界面编程第一篇 位图背景与位图画刷》介绍了通过WM_CTLCOLORDLG消息来来设置对话框的背景以及位图画刷的使用。本篇将介绍动态调节窗体透明度的方法。

调节窗体透明度可以先使用SetWindowLong为窗体加上WS_EX_LAYERED属性,再使用来SetLayeredWindowAttributes指定窗体的透明度。这样就可以在程序运行时动态的调节窗体的透明度了。

下面先介绍下SetWindowLong和SetLayeredWindowAttributes函数。

SetWindowLong可以用来设置窗口的一些属性,其函数原型如下:

LONGSetWindowLong(

HWNDhWnd,

int nIndex,

LONGdwNewLong

);

第一个参数表示窗口句柄。

第二个参数代表要设置的哪一种值,如GWL_STYLE表示将设置窗口的风格,这个参数还可以取GWL_EXSTYLE,GWL_WNDPROC,DWL_DLGPROC,GWL_HINSTANCE,GWL_USERDATA等等。

第三个参数表示要设置的值。

比如要设置对话框也能够可调节窗口大小,可以用:

// 设置对话框大小可调节

SetWindowLong(hDlg, GWL_STYLE, GetWindowLong(hDlg, GWL_STYLE) | WS_SIZEBOX);

SetLayeredWindowAttributes在MSDN上解释如下:

The SetLayeredWindowAttributes function sets the opacity and transparency color key of a layered window.

其函数原型为:

BOOLSetLayeredWindowAttributes(

HWNDhwnd,

COLORREFcrKey,

BYTEbAlpha,

DWORDdwFlags

);

第一个参数表示窗口句柄。

第二个参数表示透明色。

第三个参数表示透明度。

第四个参数表示函数将完成什么样的功能,设置成LWA_COLORKEY表示为窗口指定了透明色,设置成LWA_ALPHA表示将调整窗口的透明度,可以同时设置这两种功能。

程序代码还将用到Slider控件,这种控件可以有如下操作:

1.通过SendMessage + TBM_SETRANGE来设置滑块变化的范围。

2.通过SendMessage + TBM_SETPOS来设置滑块当前位置。

3.通过SendMessage + TBM_GETPOS来获得滑块当前位置。

查看本栏目更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/Programming/VC_NET/

时间: 2024-11-02 05:33:47

Windows界面编程(2) 半透明窗体的相关文章

Windows界面编程第七篇 文件拖拽(文件拖放)

本文配套程序下载地址为:http://download.csdn.net/detail/morewindows/5128654 转载请标明出处,原文地址:http://blog.csdn.net/morewindows/article/details/8634451 欢迎关注微博:http://weibo.com/MoreWindows   前面已经有六篇文章介绍了Windows界面编程,目录如下: 1. <Windows界面编程第一篇位图背景与位图画刷> 2. <Windows界面编程

小白问一下关于c++的windows界面编程的问题

问题描述 小白问一下关于c++的windows界面编程的问题 本人刚刚开始自学windows界面编程,用的编译器是vs2012.问了同学决定从winform入手,但是刚开始就被这些头文件啊源文件啊什么的给搞晕了.本来打算今晚写出来一个程序,但是一直在纠结这个参数传递,下面先上代码,非常简单的一个程序. 解决方案 你用winforms就要按照winforms的来,首先,不同于你在学校学的那个C++,winforms有自己的程序入口,无需再写main函数. 你新建了一个窗口,直接放上去按钮.文本框(

Windows界面编程(1) 位图背景与位图画刷

可以通过WM_CTLCOLORDLG消息来设置对话框的背景,MSDN上对这个消息的说明如下: The WM_CTLCOLORDLG message is sent to a dialog box before the system draws the dialog box. By responding to this message, the dialog box can set its text and background colors using the specified display

windows编程-初学Windows界面编程看什么书合适?

问题描述 初学Windows界面编程看什么书合适? 初学Windows界面编程看什么书合适?主要想做界面,和按键消息处理方面的编程,谢谢大神们! 解决方案 java GUI应用程序设计或者java+eclipse的书籍,要看你用什么语言 解决方案二: java GUI应用程序设计或者java+eclipse的书籍,要看你用什么语言 解决方案三: 你想走哪方面?有很多种,C# .NET WPF目前貌似比较火.qt也可以考虑,是跨平台的.还有就是MFC,现在在走下坡路,再就是win32,比较底层,后

C语言控制台窗口图形界面编程之八 鼠标事件

上次讲的是键盘事件,这次我们介绍鼠标事件.下面先介绍下鼠标事件的结构体以及相关信息. typedef struct _MOUSE_EVENT_RECORD //鼠标事件结构体 { COORD dwMousePosition; //当前鼠标在控制台窗口缓冲区的位置 DWORD dwButtonState; //鼠标按键的状态 DWORD dwControlKeyState; //控制键状态 DWORD dwEventFlags; //鼠标事件类型 } MOUSE_EVENT_RECORD; /*

C语言控制台窗口图形界面编程之六 光标操作

控制台窗口的光标的位置反映的是当前文本输入的插入位置,通过Windows API函数我们可以随意更改光标的位置,下面介绍这个控制光标位置的API函 BOOL SetConsoleCursorPosition( //设置光标位置 HANDLE hConsoleOutput, //句柄 COORD dwCursorPosition //坐标 ); //若函数调用成功则返回非0值 不仅仅是光标的位置,光标的信息我们也可以通过一些API函数来设置,下面介绍光标信息结构体已经获得和设置光标信息的API函数

C语言控制台窗口图形界面编程之五 控制文本移动的函数

控制文本的移动是控制台窗口界面编程的一个很重要的功能,有了这个功能我们可以实现界面的滚动.下面我们介绍一个控制文本移动的函数,如下: BOOL ScrollConsoleScreenBuffer( //文本移动函数 HANDLE hConsoleOutput, //句柄 const SMALL_RECT *lpScrollRectangle, //移动区域 const SMALL_RECT *lpClipRectangle, //裁剪区域,如果为NULL,那么将代表整个屏幕缓冲区 COORD d

C语言控制台窗口图形界面编程之四 常用的文本输出函数

文本颜色属性已经学会了,那么下面就学习几个比较常用的文本输出函数,如下: BOOL FillConsoleOutputAttribute( // 填充字符属性 HANDLE hConsoleOutput, // 句柄 WORD wAttribute, // 文本属性 DWORD nLength, // 个数 COORD dwWriteCoord, // 开始位置 LPDWORD lpNumberOfAttrsWritten // 返回填充的个数 ); BOOL FillConsoleOutput

C语言控制台窗口图形界面编程之三 设置文本属性的函数

在这里介绍一个设置文本属性的函数,原型如下 BOOL SetConsoleTextAttribute( // 设置WriteConsole等函数的字符属性 HANDLE hConsoleOutput, // 句柄 WORD wAttributes // 文本属性 ); 本栏目更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/Programming/C/ 顺便提一下文本属性,其实就是颜色属性,有背景色和前景色(就是字符的颜色)两类,每一类只提供