.scr,實為 .exe。scrnsave.lib 框架,僅需實作三個回呼函式。// 主視窗程序,處理繪圖、定時器、鍵盤/滑鼠結束等
BOOL WINAPI ScreenSaverProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);
// 設定對話盒程序(使用者按「設定」時顯示)
BOOL WINAPI ScreenSaverConfigureDialog(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam);
// 註冊設定對話盒使用的自訂視窗類別
BOOL WINAPI RegisterDialogClasses(HINSTANCE hInst);
DLG_SCRNSAVECONFIGURE(定義於 scrnsave.h)。resource.h 加入 #include ,刪除重複定義。SimpleScr.cpp 實作三大函式:#include
#pragma comment(lib, "scrnsave.lib")
#include "resource.h"
LRESULT CALLBACK ScreenSaverProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) {
switch (msg) {
case WM_PAINT: {
PAINTSTRUCT ps; HDC hdc = BeginPaint(hWnd, &ps);
SetBkMode(hdc, TRANSPARENT);
SetTextColor(hdc, RGB(0x33, 0xcc, 0));
TextOut(hdc, 150, 150, _T("WWW.VCKBASE.COM"), 15);
EndPaint(hWnd, &ps); break;
}
case WM_DESTROY: PostQuitMessage(0); break;
default: return DefScreenSaverProc(hWnd, msg, wParam, lParam);
}
return 0;
}
BOOL WINAPI ScreenSaverConfigureDialog(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam) {
if (msg == WM_COMMAND && LOWORD(wParam) == IDOK) {
EndDialog(hDlg, IDOK); return TRUE;
}
return FALSE;
}
BOOL WINAPI RegisterDialogClasses(HINSTANCE hInst) { return TRUE; }
SimpleScr.exe。SimpleScr.scr,複製至 C:\Windows\System32。進階開發可在 WM_CREATE 建立定時器、WM_TIMER 繪製動畫、WM_KEYDOWN/WM_MOUSEMOVE 結束程式。