复制scmpoo,流浪羊
Replicating scmpoo, the stray sheep
我决定复制scmpoo,你可能在旧电脑上使用过它,但它与任何新版本都不兼容,所以我决定重新制作它。
第一个问题是我还没想好如何在屏幕上画绵羊。就好像我自己的屏幕在我够不着的地方D:
我试着制作一个里面有图像的窗口,但我不知道如何使窗口透明,以保持图像可见?有什么想法吗?我相信这是可能的。
我对窗户有一些经验。h但不知道我是否可以用它来做这个?
此外,最初的绵羊可以站在窗口和任务栏上,所以我也需要一种方法来获取它们的位置。
有没有办法进入其他窗户,把羊拉进去?(主要谈论桌面)如果我可以访问其他窗口,我可以得到他们的位置。
假设您在Win32环境中使用GDI+,则需要注意以下几点:
-
在可视化图像时,分层窗口的透明度可以通过UpdateLayeredWindow实现(假设您的图像位于选定的HBITMAP中)
-
使用分层窗口进行平滑的图形重绘
这应该会给你一个很好的起点来实现你的屏幕伴侣。为了篡改现有窗口和/或其大小,请使用EnumWindows。
参考资料:带有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);
相关文章:
- C++17复制构造函数,在std::unordereded_map上进行深度复制
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- 使用strcpy将char数组的元素复制到另一个数组
- 是否可以初始化不可复制类型的成员变量(或基类)
- 为什么在C++中使用私有复制构造函数与删除复制构造函数
- C++ Windows 驱动程序MSB3030无法复制该文件,因为它找不到
- 复制列表初始化的隐式转换的等级是多少
- 当从函数参数中的临时值调用复制构造函数时
- 有可能在Armadillo中复制MATLAB circshift方法吗
- 复制几乎为空的数组的最快方法
- 以下示例中如何避免代码复制?C++/库达
- 如果有一个模板构造函数只有一个泛型参数,为什么我必须有一个复制构造函数
- 为什么需要复制构造函数,在哪些情况下它们非常有用
- 不能将复制初始化与隐式转换的多个步骤一起使用
- 当有分配器意识的容器被复制/移动时,反弹分配器是否被复制/移走
- 为什么复制而不是移动数据元素?
- 文件系统:复制功能的速度秘诀是什么
- 使用仅使用一次的变量调用的复制构造函数.这可能是通过调用move构造函数进行编译器优化的情况吗
- 为什么类中的ostringstream类型的成员会导致";调用隐含删除复制构造函数";错误
- 复制scmpoo,流浪羊