首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> VC >> 關於VC++

手把手教你寫 Windows 螢幕保護程式

     編輯:關於VC++

螢幕保護程式基礎

  • 副檔名 .scr,實為 .exe。
  • VC 提供 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);

最簡範例:黑畫面 + 文字

  1. 建立 Win32 Application 專案。
  2. 插入對話框資源,ID 改為 DLG_SCRNSAVECONFIGURE(定義於 scrnsave.h)。
  3. resource.h 加入 #include ,刪除重複定義。
  4. 新增 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; }

建置與測試

  1. 編譯產生 SimpleScr.exe。
  2. 重命名為 SimpleScr.scr,複製至 C:\Windows\System32。
  3. 桌面右鍵 → 內容 → 螢幕保護程式 → 選取 "SimpleScr" → 預覽。

進階開發可在 WM_CREATE 建立定時器、WM_TIMER 繪製動畫、WM_KEYDOWN/WM_MOUSEMOVE 結束程式。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved