我在 Delphi 10 Lite 中创建了一个屏幕保护程序,使用关于这个问题的不同描述,可在网络上找到。现在,屏幕保护程序运行良好,但缺少一件事:“屏幕保护程序设置”对话框中的良好工作预览。它是如何被创造出来的?我已阅读此说明:如何在 Delphi 中进行屏幕保护程序预览? 但我想要更具体的东西,也许有一个例子。我正在使用 Windows 7 Ultimate SP1。谢谢。
问问题
2055 次
2 回答
5
Embarcadero 站点,提供了一个功能齐全的屏幕保护程序示例,包括正常执行(运行)、预览、密码设置等。试试这篇文章Random Images Screen Saver - a complete screen saver example
,源代码可以从这里下载。
于 2013-04-23T16:59:25.253 回答
0
这是我在我的小擦洗屏幕保护程序测试中所做的(这样做是为了看看一个人如何工作而不是打磨它):
WinHandle 是 /P 切换期间传递的窗口 ID。我操纵了一些东西(屏幕保护程序只是以不同的颜色放置一个定义的文本,它们之间有一个定义的延迟)让屏幕保护程序作用于窗口句柄,所以我不必复制屏幕保护程序代码本身。SS_Init 为屏幕保护程序初始化事物,SS_Start 完成其中一步,SS_End 将事物包装起来。
if program_state = Preview then // code before indicates /P was passed
begin
{ spindle off messages until window is visible }
while not IsWindowVisible(WinHandle) do
Application.ProcessMessages;
{ initialize and do screen saver draw }
start_time := WinMSSinceStart; // timeGetTime
SS_Init(WinHandle);
while IsWindowVisible(Winhandle) do
begin
if (WinMSSinceStart - Start_Time) >= config_rec.Delay then
begin
SS_Start(WinHandle);
start_time := WinMSSinceStart;
end;
Application.ProcessMessages;
sleep(10);
end;
SS_End(Winhandle);
end;
这是您如何设置 TCanvas 以在传递的窗口句柄上绘制(这是在 SS_Init 中(但不是全部)。MyCanvas 是我根据此代码定义的属性:
{ get window dimensions and set up TCanvas }
GetClientRect(WinHandle, WinRect);
MyCanvas := TCanvas.Create;
MyCanvas.Handle := GetDC(Winhandle);
然后当你完成时(这是我的整个 SS_End 函数):
ReleaseDC(WinHandle, MyCanvas.Handle);
MyCanvas.Free;
希望能有所帮助。
于 2013-04-23T18:44:58.273 回答