您的位置:首页 > 其它

VC中创建具有透明效果的对话框

2013-02-01 21:18 225 查看
1、创建一个基于对话框的MFC EXE

2、在对话框的 OnInitDialog 函数 中,设置对话框扩展属性 为:WS_EX_LAYERED

const WS_EX_LAYERED = 0x80000;

::SetWindowLong(GetSafeHwnd(),GWL_EXSTYLE,

GetWindowLong(GetSafeHwnd(),GWL_EXSTYLE)|WS_EX_LAYERED);


3、在对话框的 OnInitDialog 函数 中,设置对话框透明

HINSTANCE hInst;

const LWA_COLORKEY = 0x00001;

const LWA_ALPHA = 0x00002;


typedef BOOL (WINAPI *FSetLayeredWindowAttributes)(HWND,COLORREF,BYTE,DWORD);

FSetLayeredWindowAttributes SetLayeredWindowAttributes;


hInst = LoadLibrary("User32.dll");

SetLayeredWindowAttributes = (FSetLayeredWindowAttributes)

GetProcAddress(hInst,"SetLayeredWindowAttributes");

SetLayeredWindowAttributes(GetSafeHwnd(),RGB(0,0,0),150,LWA_ALPHA);


FreeLibrary(hInst);

注:此方法仅适用 Windows2000以上平台

补充部分:

还有另外一种方法可以实现对话框的透明,而且也简单一些,但是我在除自己电脑外,还在同学电脑上也试了下,效果一点都不好,做法是这样的,在VC中打开对话框资源,在对话框编辑器上右击选择属性(PROPERTIES),然后选择扩展属性(EXTENTED STYLE),勾选上TRANSPARENT。这个效果在我电脑上不明显,但你可以试试看。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: