更新时间:2015-10-28 22:44:25浏览次数:1+次
GetProcAddress函数检索指定的动态链接库(DLL)中的输出库函数地址。
FARPROC GetProcAddress(
HMODULE hModule, // DLL模块句柄
LPCSTR lpProcName // 函数名
);
hModule如果函数调用失败,返回值是NULL。得到进一步的错误信息,调用函数GetLastError。
SetLayeredWindowAttributes此函数用于设置分层窗口透明度,常和 UpdateLayeredWindow 函数结合使用。
BOOL SetLayeredWindowAttributes(
HWND hwnd, // 指定分层窗口句柄
COLORREF crKey, // 指定需要透明的背景颜色值,可用RGB()宏
BYTE bAlpha, // 设置透明度,0表示完全透明,255表示不透明
DWORD dwFlags // 透明方式
);
其中,dwFlags参数可取以下值:LONG t = GetWindowLong(m_hWnd, GWL_EXSTYLE);
t |= WS_EX_LAYERED;
SetWindowLong(m_hWnd, GWL_EXSTYLE, t);
此函数在VC6.0中没有声明,需要自定义后在user32.dll后动态获取地址后调用。在VC9.0(VS2008)及其之后版本中可以直接调用typedef BOOL (FAR WINAPI *LAYERFUNC)(HWND,COLORREF,BYTE,DWORD);
BOOL SetLayeredWindowAttributes(HWND hwnd,COLORREF crKey,BYTE bAlpha,DWORD dwFlags)
{
LAYERFUNC SetLayer;
HMODULE hmod = LoadLibrary("user32.dll");
SetLayer=(LAYERFUNC)GetProcAddress(hmod,"SetLayeredWindowAttributes");
BOOL bReturn = SetLayer(hwnd,crKey,bAlpha,dwFlags);
FreeLibrary(hmod);
return bReturn;
}
我还将写篇文章,实例讲解半透明窗口的创建,尽请关注!
相关资讯