windowsSDK利用子窗口控件设置窗口透明
在看对话框之前,还是觉得有必要先看一下子窗口控件,很多对话框的知识点都涉及到子窗口控件。
正好看到学长的一篇实现窗口透明化的文章,对它比较感兴趣,于是就想拿这个例子来练练手
首先先介绍下窗口透明化的实现:
首先是下面这个函数
LONG SetWindowLong(HWND hWnd,int nlndex,LONG dwNewLong);
SetWindowLong该函数改变指定窗口的属性.函数也将指定的一个32位值设置在窗口的额外存储空间的指定偏移位置。
SetWindowLong(hwnd,GWL_EXSTYLE,WS_EX_LAYERED);
上面这条代码扩展了一种窗口风格,其中GWL_EXSTYLE设定一个新的扩展风格。接下来我们就可以使用下面这个函数来实现窗口的透明化:
BOOL SetLayeredWindowAttributes(
HWND hwnd, // handle to the layered window 透明窗体的句柄
COLORREF crKey, // specifies the color key 颜色值
BYTE bAlpha, // value for the blend function 透明度,取值范围是[0,255]
DWORD dwFlags // action 透明方式,可以取两个值:
);
当取值为LWA_ALPHA时,crKey参数无效,bAlpha参数有效;
当取值为LWA_COLORKEY时,bAlpha参数有效,而窗体中的所有颜色为crKey的地方将变为透明。
以上这些就是有关窗口透明度实现的方法了,好,现在我结合子窗口控件来具体实现它。代码如下:
在编辑框里输入0-255的任意数字,点击确定,窗口就能实现透明化的设置了。
接下来的任务我打算在看完对话框之后再用对话框实现窗口透明的效果,增加滚动条的实现,鼠标的实现,更好地理解和学习对话框
我是一个新手,希望大家能帮我指出错误我好加以改正,谢谢~~