SetWindowLong(this->GetSafeHwnd(),
GWL_EXSTYLE,
GetWindowLong(this->GetSafeHwnd(),GWL_EXSTYLE)^0x80000);
HINSTANCE hInst = LoadLibrary("User32.DLL");
if(hInst)
{
typedef BOOL (WINAPI *MYFUNC)(HWND,COLORREF,BYTE,DWORD);
MYFUNC fun = NULL;
//取得SetLayeredWindowAttributes函数指针
fun=(MYFUNC)GetProcAddress(hInst, "SetLayeredWindowAttributes");
if(fun)
{
//fun(this->GetSafeHwnd(),0,129,2);
fun(this->GetSafeHwnd(),GetSysColor(COLOR_BTNFACE), 129, LWA_COLORKEY);
}
FreeLibrary(hInst);
}
使用以上方法实现半透明窗口时,
编译时输出如下:
error C2065: 'LWA_COLORKEY' : undeclared identifier
明明引入了相关的头文件:#include "WinUser.h",怎么还会提示'LWA_COLORKEY'未定义呢?
查看头文件件中的定义发现,是条件定义的问题;
在:#include "WinUser.h"之前添加:#define _WIN32_WINNT 0x0502
问题解决;