小弟,获得桌面句柄后,在桌面显示一个BMP图片,但是没法消去图片,恢复桌面,请各位大虾指教
背景:我看到一个软件运行时在桌面显示许多鲜花图片,然后移动鼠标,桌面重新显示。
我的问题是:1,图片不能消去
            2,我用HOOK检测鼠标,但是不能进钩子函数,注册函数能返回钩子句柄
请大虾赐教

解决方案 »

  1.   

    刷新桌面.
    ::InvalidateRect(GetDesktopWindow(),NULL,TRUE);
      

  2.   

    TO sjdev
    谢谢,InvalidateRect()我用过,不行,
      

  3.   

    可以建立一个WS_POPUP类型的窗口。
    然后在窗口消息处理程序中处理。
    1、在WM_CREATE消息中如下处理:
    (1)、检查屏幕大小
    (2)、用SetWindowPos设置窗口大小,使之覆盖屏幕
    (3)、设置一个定时器,用来显示图片2、在WM_MOUSEMOVE消息中调用InvalidateRect函数擦除窗口3、在WM_TIMER消息中显示图片4、在WM_LBUTTONDOWN消息中让程序退出,就是当左击屏幕之后,程序退出我有类似的程序,是用API写的,如果需要,加我QQ:286000435
      

  4.   

    可以用RedrawWindow(NULL, NULL, NULL, RDW_ERASE | RDW_FRAME | RDW_INVALIDATE | RDW_UPDATENOW | RDW_ALLCHILDREN)刷新桌面
      

  5.   

    想在移动鼠标后再消去桌面也很容易, 只要SetCapture(主窗口handle)就可以了, 在鼠标点击前所有鼠标消息都会post到你的主窗口, 如果鼠标点击了桌面上其它程序的窗口, 那么你的主窗口会收到一个WM_ACTIVATEAPP消息, 通过上述两个消息你就可以达到你的目标了。