效果:

1.定义两个个定时器ID

#define ID_TIMER_DISPLAY_DELAY 30
#define ID_TIMER_DISPLAY_CLOSE 40

2.添加一个成员函数和成员变量

void SetAlpha(HWND hWnd,int Alpha);

int m_nFlag ;

void CPopUpWnd::SetAlpha(HWND hWnd,int Alpha)
{

HINSTANCE hInst = LoadLibrary(L"User32.DLL");
  if(hInst)
  {
    typedef BOOL (WINAPI *MYFUNC)(HWND,COLORREF,BYTE,DWORD);
    MYFUNC fun = NULL;
   //取得SetLayeredWindowAttributes函数指针
   fun=(MYFUNC)GetProcAddress(hInst, "SetLayeredWindowAttributes");
   if(fun)fun(hWnd,0,Alpha,2);
   FreeLibrary(hInst);
   }

}

3.修改窗口属性

void CPopUpWnd::OnPrepare()
{
//直接显示在右下角
MoveSelfWindow(); //修改窗口属性为了窗口透明度
SetWindowLong(m_hWnd,GWL_EXSTYLE,GetWindowLong(m_hWnd,GWL_EXSTYLE)^0x80000);

//3秒后改变窗口透明度
     SetTimer(m_hWnd,ID_TIMER_DISPLAY_DELAY,3000,NULL);

}

4.在定时器响应函数里

LRESULT CPopUpWnd::OnTimer(UINT uMsg, WPARAM wParam, LPARAM lParam,BOOL& bHandled)
{ switch(wParam)
{//多个定时器 case ID_TIMER_DISPLAY_DELAY:
KillTimer(m_hWnd,ID_TIMER_DISPLAY_DELAY);
SetTimer(m_hWnd,ID_TIMER_DISPLAY_CLOSE,,NULL);
break;
case ID_TIMER_DISPLAY_CLOSE:
{
if(m_nFlag < )
{
m_nFlag+= ;
SetAlpha(m_hWnd,-m_nFlag);
}
else
{
KillTimer(m_hWnd,ID_TIMER_DISPLAY_CLOSE);
Close(IDCLOSE);
m_nFlag = ;
}
}
break;
}
return ;
}

5.窗口渐变关闭过程中,鼠标经过窗口,关闭定时器,窗口恢复原状

LRESULT CPopUpWnd::OnMouseEnter(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{ ..... //KillTimer(m_hWnd,ID_TIMER_DISPLAY_DELAY);
KillTimer(m_hWnd,ID_TIMER_DISPLAY_CLOSE);
if (m_nFlag < )
{
SetAlpha(m_hWnd,);
} .... return ;
}

6.鼠标出了窗口,开启定时器继续渐变关闭窗口

LRESULT CPopUpWnd::OnMouseLeave(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
..... SetTimer(m_hWnd,ID_TIMER_DISPLAY_CLOSE,,NULL);
m_nFlag = ; ....
return ;
}

Duilib 实现右下角弹出像QQ新闻窗口,3秒后窗口透明度渐变最后关闭,若在渐变过程中鼠标放到窗口上,窗口恢复最初状态(二)的更多相关文章

  1. Duilib 实现右下角弹出像QQ新闻窗口,3秒后自动关闭(一)

    转载:https://blog.twofei.com/667/ 自绘或子类化控件时,有时需要处理鼠标进入(MouseEnter)/鼠标离开(MouseLeave)/鼠标停留(MouseHover)消息 ...

  2. C#利用API制作类似QQ一样的右下角弹出窗体

    C#利用API制作类似QQ一样的右下角弹出窗体 (2009-03-21 15:02:49) 转载▼ 标签: 杂谈 分类: .NET using System;using System.Collecti ...

  3. 搜狗输入法弹出搜狐新闻的解决办法(sohunews.exe)

    狗输入法弹出搜狐新闻的解决办法(sohunews.exe) 1.找到搜狗输入法的安装目录(一般是C:\program files\sougou input\版本号\)2.右键点击sohunews.ex ...

  4. 右下角弹出"Windows-延缓写入失败"或者"xxx-损坏文件 请运行Chkdsk工具"

    知识点分析: 任务栏右下角弹出“Windows-延缓写入失败”或者“xxx-损坏文件 请运行Chkdsk工具”. 操作步骤: 方法一:Chkdsk工具 在开始---运行中输入cmd,然后输入chkds ...

  5. Jquery--仿制360右下角弹出窗口

    原文:Jquery--仿制360右下角弹出窗口 先发浏览器效果图,给大家看. 要实现这样的效果,按照思路,第一步,写好CSS布局,将图片放到浏览器右下角的位置 CSS代码很灵活,我写的只是简单的一种而 ...

  6. C#右下角弹出消息框

    打开QQ的时候,QQ新闻弹出窗体在屏幕的右下角就会慢慢升起一个小窗口,占用的地方不大,可以起到提示的作用.下面就让我们来看看,怎样用系统API来轻松实现这个功能.API原型函数:bool Animat ...

  7. 仿酷狗音乐播放器开发日志二十六 duilib在标题栏弹出菜单的方法

    转载请说明原出处,谢谢~~ 上篇日志说明了怎么让自定义控件响应右键消息.之后我给主窗体的标题栏增加右键响应,观察原酷狗后可以发现,在整个标题栏都是可以响应右键并弹出菜单的.应该的效果如下: 本以为像上 ...

  8. c# 右下角弹出窗口

    public partial class Form2 : Form { System.Diagnostics.Stopwatch sth = new System.Diagnostics.Stopwa ...

  9. winform C#屏幕右下角弹出消息框并自动消失

    ①弹出信息框后慢慢下降消失 在主窗体中新增按钮重命名为btnShowAndDisappearMessages,在click事件中写如下代码: private void btnShowAndDisapp ...

随机推荐

  1. FMOD变声如何捕获并存储处理音效之后的数据

    类似AVAudioEngine的功能,一个Engine可以将N个connect连接(串联和并联)在一起,这样来实现多个输入源,多层处理效果的混合输出.实现这个所需功能也是通过这样的方案来实现的.也就是 ...

  2. bisecting k-means

    总结 1.二分法 2.总体中的最值 bisecting k-means :在初始时将所有数据当成一个聚簇,然后递归地将最不紧凑的聚簇用2-means拆分为2个聚簇,直至满意

  3. df and du

    1.若有进程在占用某个文件,而其他进程把这文件删掉,只会删除其在磁盘中的标记,而不会释放其占用的磁盘空间:直到所有访问该文件的进程退出为止: 2.df 是从内核中获取磁盘占用情况数据的,而du是统计当 ...

  4. 网络攻防大作业——用python实现wifi破解

    实验内容:不借助其他工具,用python暴力破解wifi 实验工具:python3.6+pywifi模块+密码字典 实验环境:Windows7(64bit) 实验思路: 首先搜索附近的wifi,将这些 ...

  5. kubernetes网络原理

    1.1. 基础原则 每个Pod都拥有一个独立的IP地址,而且假定所有Pod都在一个可以直接连通的.扁平的网络空间中,不管是否运行在同一Node上都可以通过Pod的IP来访问. k8s中Pod的IP是最 ...

  6. 洛谷P2322 最短母串问题 [HNOI2006] AC自动机

    正解:AC自动机+最短路 解题报告: 传送门! 这题之前考试考到辣,,,我连题目都没看懂这种傻逼事儿就不要说了QAQ 然后就港正解辣 首先这题可以用dp做?等下写 但是一般来说看到这种,第一反应就,先 ...

  7. C++三大特性之多态

    原文地址:https://qunxinghu.github.io/2016/09/08/C++%20%E4%B8%89%E5%A4%A7%E7%89%B9%E6%80%A7%E4%B9%8B%E5%A ...

  8. 控制div显示隐藏(有文字图片介绍)

    <div class="toggle"> <p id="zi">收起</p> <p id="zhe" ...

  9. 论存储IOPS和Throughput吞吐量之间的关系

    论存储IOPS和Throughput吞吐量之间的关系 http://www.csdn.net/article/2015-01-14/2823552 IOPS和Throughput吞吐量两个参数是衡量存 ...

  10. python ddt 实现数据驱动一

    ddt 是第三方模块,需安装, pip install ddt DDT包含类的装饰器ddt和两个方法装饰器data(直接输入测试数据) 通常情况下,data中的数据按照一个参数传递给测试用例,如果da ...