void CChangeDlg::OnTransparence50()
{
// TODO: Add your command handler code here //加入WS_EX_LAYERED扩展属性
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,128,2);
FreeLibrary(hInst);
}
}想实现的效果是:点按钮后,窗体透明度变成50%
但现在的情况是:第一次点按钮后,窗体透明度变成50%,第二次点,窗体透明度居然变成100%,第三次点按钮后,窗体透明度变成50%,第四次点,窗体透明度居然变成100%,如此反复
是什么问题啊
{
// TODO: Add your command handler code here //加入WS_EX_LAYERED扩展属性
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,128,2);
FreeLibrary(hInst);
}
}想实现的效果是:点按钮后,窗体透明度变成50%
但现在的情况是:第一次点按钮后,窗体透明度变成50%,第二次点,窗体透明度居然变成100%,第三次点按钮后,窗体透明度变成50%,第四次点,窗体透明度居然变成100%,如此反复
是什么问题啊
GetWindowLong(this->GetSafeHwnd(),GWL_EXSTYLE)|0x80000);