复制洗发水,流浪羊

时间:2014-10-06 20:41:18

标签: c++ screen

我决定复制scmpoo,你可能已经在旧电脑上使用了它,但它与任何新版本不兼容,所以我决定重新制作它。

第一个问题是我还没弄明白如何在屏幕上画羊。就像我自己的屏幕一样,我无法触及D:

我尝试在里面制作一个带有图像的窗口,但我不知道如何使窗口保持透明,保持图像可见?有任何想法吗?我确定这可能不知何故。

我对windows.h有一些经验,但不知道我是否可以使用它?

原来的羊也可以站在窗户和任务栏上,所以我也需要一种方法来获得它们的位置。

是否有办法访问其他窗户并在其中画羊? (主要谈论桌面)如果我可以访问其他窗口,我可以得到他们的位置。

1 个答案:

答案 0 :(得分:4)

假设您在Win32环境中使用GDI +,您需要注意以下几点:

  • 使用UpdateLayeredWindow可以实现图像可视化时分层窗口的透明度(假设您的图像位于选定的HBITMAP中)

  • 使用layered window进行流畅的图片重绘

这应该为你提供一个很好的起点来实现你的同事。为了摆弄现有的窗口和/或尺寸,请使用EnumWindows

参考文献:splash screen with GDI+


编辑:既然您在评论中决定选择CSplash,为了将位置更改为启动画面,您应该修改窗口位置

    DWORD nScrWidth  = ::GetSystemMetrics(SM_CXFULLSCREEN);
    DWORD nScrHeight = ::GetSystemMetrics(SM_CYFULLSCREEN);

    int x = (nScrWidth  - m_dwWidth) / 2; // Center horizontally
    int y = (nScrHeight - m_dwHeight) / 2; // Center vertically
    m_hwnd = ::CreateWindowEx(WS_EX_TOPMOST|WS_EX_TOOLWINDOW, m_lpszClassName, 
                              TEXT("Banner"), WS_POPUP, x, y, 
                              m_dwWidth, m_dwHeight, NULL, NULL, NULL, this);