Visual Studio .NET 2002Visual Studio 6Visual C++ 7.0Visual Studio .NET 2003Windows 2003Visual Studio 2005Windows 2000Visual C++ 6.0Windows XPMFC初学者开发Visual StudioWindowsC++
CGlassDialog
这是一个简单的类,可以使透明对话框以更平滑的方式显示。
引言
在介绍这个类之前,我想告诉大家我的英语不太好。而且,这是我的第一篇文章。我一直从这个网站得到很多帮助,所以我真的很想写一篇文章回馈社区。
无论如何,这是一个简单的类,可以使透明对话框以更平滑的方式显示。我制作这个的原因是……我一直在制作一个带有透明窗口的程序。我认为如果窗口能更平滑地显示出来,在视觉上会更好。然后我决定制作这个类。
如何制作这个?
这很简单,我使用 OnTimer()
来实现平滑显示。
首先,你必须在你的.h 文件中声明它
#define WS_EX_LAYERED 0x00080000
#define LWA_COLORKEY 0x00000001
#define LWA_ALPHA 0x00000002
#define ULW_COLORKEY 0x00000001
#define ULW_ALPHA 0x00000002
#define ULW_OPAQUE 0x00000004
typedef BOOL(WINAPI *SLWA)(HWND, COLORREF, BYTE, DWORD);
然后,你可以使用这段代码
SLWA pSetLayeredWindowAttributes = NULL;
HINSTANCE hmodUSER32 = LoadLibrary("USER32.DLL");
pSetLayeredWindowAttributes =(SLWA)GetProcAddress(hmodUSER32,
"SetLayeredWindowAttributes");
SetWindowLong(m_hWnd, GWL_EXSTYLE,
GetWindowLong(m_hWnd, GWL_EXSTYLE) | WS_EX_LAYERED);
pSetLayeredWindowAttributes(m_hWnd, 0, (255 * m_nGlass) / 100, LWA_ALPHA);
在这段代码中,m_nGlass
是透明度的等级,你可以将其设置为 0 到 100 之间。(如果将 m_nGlass
设置为 0,对话框将完全透明。如果将 m_nGlass
设置为 100,对话框将完全不透明。)
我使用了这一点。OnTimer()
是 WM_TIMER
的事件函数,因此它会以规律的时间间隔执行该函数。
在 OnTimer()
中,你改变 m_nGlass
的值
(m_nGlass >= 70) ? ReleaseTimer() : m_nGlass += m_nStepUnit;
如何使用这个?
如果你想使用这个类,首先,将 GlassiDialog.h 和 GlassDialog.cpp 添加到你的项目中,并在需要的地方包含 #include GlassDialog.h
。然后,在你的对话框类中继承 CGlassDialog
类。(例如,你应该将对话框的基础类从 CDialog
更改为 CGlassDialog
。只需转到你的 .cpp、.h 文件并使用你的代码编辑器的**“替换”**功能将所有 CDialog
替换为 CGlassDialog
。)
现在,就完成了!你的对话框类已经准备好了。当你创建你的对话框对象时,你将能够看到一个平滑显示的对话框。
感谢阅读我的文章!! :)