2014-10-06 69 views
2

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

第一个问题是我还没弄清楚如何在屏幕上画羊。这就像我自己的屏幕不在我的范围内D:

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

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

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

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

回答

4

假设你正在使用GDI +在Win32环境下,你需要注意的几点问题:分层窗口的

这应该给你一个很好的起点来实现你的screenmate。为了摆弄现有的窗户和/或他们的大小使用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); 
+0

只是为了让我们知道我是如何解决最后一个库问题的......我决定再次查看库,并在5分钟后意识到,当调用'RegisterClassEx'函数时,我的所有类都具有相同的默认类名。改变这一点让我尽可能多地展示我需要的:) – zoran404 2014-10-15 17:02:30