CRect rectClient;
GetClientRect(&rectClient);
HDC hdc = ::GetDC(m_hWnd);
BOOL fFade = FALSE;
HWND hwnd;
SIZE size;
POINT ptSrc = {0, 0};
BLENDFUNCTION blend;
// Be nice and respect the user's wishes: Do they want the fade?
SystemParametersInfo(SPI_GETSELECTIONFADE, 0, &fFade, 0);
if (!fFade)
return;
hwnd = CreateWindowEx(WS_EX_LAYERED | // Layered Windows
WS_EX_TRANSPARENT | // Don't hittest this window
WS_EX_TOPMOST | WS_EX_TOOLWINDOW,
"Button", NULL, WS_POPUP | WS_VISIBLE, rectClient.left,
rectClient.top, 0, 0, NULL, (HMENU)0, AfxGetInstanceHandle(), NULL);
size.cx = rectClient.Width();
size.cy = rectClient.Height();
blend.BlendOp = AC_SRC_OVER;
blend.BlendFlags = 0;
blend.AlphaFormat = 0;
blend.SourceConstantAlpha = gbAlpha;
UpdateLayeredWindow(hwnd, NULL, NULL, &size, hdc, &ptSrc, 0,
&blend, ULW_ALPHA);
// Finally set the animation timer
::SetTimer(hwnd, IDT_FADE, 25, NULL);
::ReleaseDC(m_hWnd, hdc);上面的代码是成功的,但是我一旦把:UpdateLayeredWindow(hwnd, NULL, NULL, &size, hdc, &ptSrc, 0,
&blend, ULW_ALPHA);换做UpdateLayeredWindow(m_hWnd, NULL, NULL, &size, hdc, &ptSrc, 0,
&blend, ULW_ALPHA);之后就不行了,@err,hr说参数错误,搞不懂是为什么?为什么参数参数1不能是本窗口呢??(说明一下,m_hWnd是具有WS_EX_LAYERED这个style的)
GetClientRect(&rectClient);
HDC hdc = ::GetDC(m_hWnd);
BOOL fFade = FALSE;
HWND hwnd;
SIZE size;
POINT ptSrc = {0, 0};
BLENDFUNCTION blend;
// Be nice and respect the user's wishes: Do they want the fade?
SystemParametersInfo(SPI_GETSELECTIONFADE, 0, &fFade, 0);
if (!fFade)
return;
hwnd = CreateWindowEx(WS_EX_LAYERED | // Layered Windows
WS_EX_TRANSPARENT | // Don't hittest this window
WS_EX_TOPMOST | WS_EX_TOOLWINDOW,
"Button", NULL, WS_POPUP | WS_VISIBLE, rectClient.left,
rectClient.top, 0, 0, NULL, (HMENU)0, AfxGetInstanceHandle(), NULL);
size.cx = rectClient.Width();
size.cy = rectClient.Height();
blend.BlendOp = AC_SRC_OVER;
blend.BlendFlags = 0;
blend.AlphaFormat = 0;
blend.SourceConstantAlpha = gbAlpha;
UpdateLayeredWindow(hwnd, NULL, NULL, &size, hdc, &ptSrc, 0,
&blend, ULW_ALPHA);
// Finally set the animation timer
::SetTimer(hwnd, IDT_FADE, 25, NULL);
::ReleaseDC(m_hWnd, hdc);上面的代码是成功的,但是我一旦把:UpdateLayeredWindow(hwnd, NULL, NULL, &size, hdc, &ptSrc, 0,
&blend, ULW_ALPHA);换做UpdateLayeredWindow(m_hWnd, NULL, NULL, &size, hdc, &ptSrc, 0,
&blend, ULW_ALPHA);之后就不行了,@err,hr说参数错误,搞不懂是为什么?为什么参数参数1不能是本窗口呢??(说明一下,m_hWnd是具有WS_EX_LAYERED这个style的)
解决方案 »
- 界面 显示图片
- 请教一个 svn or CVS的问题 === 我有一个模块,添加了新的功能, 不想让别人知道,我做失败了 就把他miss 掉
- 急急!CInternetSession 在WIN32Applicaton生成的程序中编译能通过 调试时为什么报异常呢??
- 在线等待,求助:非模式对话框创建时,使其不获得焦点的方法
- 各位大哥,大姐们,上面的那问题(高分求一简单程序...)也没什么难度吧,怎么没人回呢???
- 各位大哥给点意见,谢谢!!!
- 谢谢:我打开msdn的vc中mfc例子时,编译连接后说打不开mfc42ud.lib是什么原因?
- 奇怪!看看下面这个COM问题!
- 高手HELP,请问如何从EDIT控件中接收一个字符,比如回车或‘a’之类的
- 问一下SSL开发的几个问题
- QQ截屏,导致丢失鼠标消息,该如何处理?
- [简单问题] 点击了Button,Radio选项自动改为第一选项了,为什么?
[in] Handle to a layered window. A layered window is created by specifying WS_EX_LAYERED when creating the window with the CreateWindowEx function.