2013-08-05 60 views
2

我已经使用OpenGL和SDL(它不使用Windows库)在C++中创建了一个动画,并且希望将其用作Windows系统的屏幕保护程序。我读了一个例子:它描述了您只需将.exe扩展名更改为.scrC++为Windows创建屏幕保护程序

我已经做到了,并运行动画作为屏幕保护程序,但我注意到动画确实而不是运行顺利。就好像应用程序性能出现了损失一样。

我创建的应用程序创建动画,将其设置为全屏幕,隐藏光标并处理所有键盘输入。如何使我的应用程序能够顺利地作为屏幕保护程序运行?

+0

可能与DirectX它效果更好。你想要的exe文件的性能? – user2029077

+0

该exe文件工作完美。当我将它改为scr时,它会失去性能。更改扩展名时,这是一个常见问题吗? – starhacker

+0

我不确定。看来Windows在其他方面对待scr。尝试将本机窗口屏幕保护程序更改为exe文件并比较性能。 – user2029077

回答

4

这不仅仅是重命名文件。

在最低限度,你必须支持响应以下命令行参数正确的行为(从Microsoft拍摄):

ScreenSaver   - Show the Settings dialog box. 
ScreenSaver /c  - Show the Settings dialog box, modal to the 
         foreground window. 
ScreenSaver /p <HWND> - Preview Screen Saver as child of window <HWND>. 
ScreenSaver /s  - Run the Screen Saver. 

如果正在启动您的可执行文件的多个实例,并运行一个全屏幕画面保护程序(如果指定了/ s,屏幕保护程序应实际运行),这可能是性能问题的原因。你应该在例如任务管理器。

希望有所帮助。

+0

为了使屏幕保护程序,我将不得不做一个Win32项目?由于我使用了SDL,因此我需要主函数,因为没有它,它声明了对'SDL_main'的未定义引用。 – starhacker

+1

是的,制作一个Windows应用程序项目,并使用main()而不是WinMain()。请参阅“使用SDL创建项目”,网址为http://www.libsdl.org/tmp/SDL/VisualC.html。 –

+0

从我完成我的工作屏幕保护程序开始,它已经有一段时间了。我用适当的支持只使用OpenGL将它变成了一个Win32项目。我的动画只是连续旋转图像,但屏幕保护程序但在旋转大图像时不能平稳运行(800 X 800),因此我必须将其缩小到(200 x 200)左右。 – starhacker

相关问题