关于AnimateWindow的使用

_静以修身 2013-04-09 09:41:59
自绘的窗体,风格为
 
DWORD dwStyle = WS_SYSMENU | WS_POPUP;
DWORD dwExStyle = WS_EX_TOOLWINDOW | WS_EX_TOPMOST | WS_EX_LAYERED;


有如下两种使用动画的方式:

//第一种方式
AnimateWindow(m_hWnd,500,AW_BLEND); //窗口可以显示
//第二种方式
AnimateWindow(m_hWnd,500,AW_ACTIVATE | AW_SLIDE | AW_VER_POSITIVE); //窗口无法显示


问题:使用第一种方式时,窗口可以正常显示出来,但使用第二种的时候,无法显示。不知是不是忘记设置什么参数?求解。
...全文
77 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
_静以修身 2013-04-09
  • 打赏
  • 举报
回复
引用 1 楼 VisualEleven 的回复:
把WS_EX_LAYERED属性去掉
可以了 再请问下,如果我想在动画的过程中,背景始终透明呢? 如果我在动画后添加

LONG	nStyle = GetWindowLong(m_hWnd, GWL_EXSTYLE);
SetWindowLong(m_hWnd, GWL_EXSTYLE, nStyle | WS_EX_LAYERED);	 
SetLayeredWindowAttributes(m_hWnd,RGB(0,0,0),150,LWA_COLORKEY);
那么动画过程中,一直是黑色的背景。 是不是要处理WM_PAINT和WM_PRINTCLIENT消息??怎么处理呢??
Eleven 2013-04-09
  • 打赏
  • 举报
回复
把WS_EX_LAYERED属性去掉

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧