公司让我做一个信息提示窗口.
要求:
这个窗口不接受任何消息,包括鼠标的移动、双击、左键单击、右键单击。简单说就是这个窗口就像是贴在屏幕上一样。
假设该窗口的下层窗口是一个网页的超链接,当鼠标移动到该窗口且在超链接的上方时:
1.鼠标形状就是一个小手。
2.当单击时就像单击了这个链接,打开这个链接.
3.当右击时就像右击了这个链接.
总之,这个窗口虽然显示了,但不影响任何对该窗口的下层窗口操作.给我的时间是10天.
大家帮帮忙呀,如果谁能帮我解决这个问题,我出1000分帮没问题.

解决方案 »

  1.   

    这个窗口应该是半透明的吧,设置窗口的GWL_EXSTYLE为WS_EX_LAYERED和WS_EX_TRANSPARENT就行了GWL_EXSTYLE
    ::SetWindowLong(hWnd,GWL_EXSTYLE,::GetWindowLong(hWnd,GWL_EXSTYLE));SetLayeredWindowAttributes
    可以设置窗口的透明程度
      

  2.   

    错了,是这样的:
    GWL_EXSTYLE
    ::SetWindowLong(hWnd,GWL_EXSTYLE,::GetWindowLong(hWnd,GWL_EXSTYLE)|WS_EX_LAYERED|WS_EX_TRANSPARENT);SetLayeredWindowAttributes
    可以设置窗口的透明程度
      

  3.   

    我大概明白了你的意思,其实最好是不做窗口。因为它必定要处理消息,即使你转发也很麻烦。
    可以用贴图,影响键盘、鼠标消息的处理。
    你可以直接在顶层窗口上画出你的信息提示,每隔一定时间重新绘制一下,直到可以退出为止。
    大概的方法:开始定时器、获取桌面的DC,画图,释放DC、结束定时器。
      

  4.   

    其实我觉得你应该说明一下这样做的意图,或者设计原意。因为感觉这样做很浪费资源。假如你是要模拟一个超链接,有很多简单的办法,不需要建两个窗口的。假如非要这么做。你可以把上层窗口disable掉。这样键盘鼠标消息会跑到下层窗口
      

  5.   

    HWND hwnd = GetForegroundWindow();
      

  6.   

    不十分清楚你的意思,我猜想你是否要做一个 网际快车 那样的浮动窗,当然不让它能移动,有必要还可设置它为最底下.如果是我就把它作成是主窗口的对话框,主窗口如果不需要就隐藏起来。改变光标在它的WM_SETCURSOR处理函数OnSetCursor。
    点激鼠标处理函数的最后SetActiveWindow()设置别的窗口为活动窗口