📄 01_9_13_18.asp.html
字号:
#include </td></tr></table><table width=100% ><tr><td class=a14>
#include</td></tr></table><table width=100% ><tr><td class=a14>
// SCRNSAVE.LIB的头文件</td></tr></table><table width=100% ><tr><td class=a14>
#include "resource.h"</td></tr></table><table width=100% ><tr><td class=a14>
//声明三个基本的函数</td></tr></table><table width=100% ><tr><td class=a14>
LRESULT WINAPI ScreenSaveProc</td></tr></table><table width=100% ><tr><td class=a14>
(HWND,UINT,WPARAM,LPARAM);</td></tr></table><table width=100% ><tr><td class=a14>
BOOL WINAPI ScreenSaveConfigureDialog</td></tr></table><table width=100% ><tr><td class=a14>
(HWND,UINT,WPARAM,LPARAM);</td></tr></table><table width=100% ><tr><td class=a14>
BOOL WINAPI RegisterDialogClasses(HINSTANCE);</td></tr></table><table width=100% ><tr><td class=a14>
//定义三个基本的函数</td></tr></table><table width=100% ><tr><td class=a14>
LRESULT WINAPI ScreenSaverProc</td></tr></table><table width=100% ><tr><td class=a14>
(HWND hWnd, UINT message, WPARAM wParam,</td></tr></table><table width=100% ><tr><td class=a14>
LPARAM lParam)</td></tr></table><table width=100% ><tr><td class=a14>
{ HDC hDC;</td></tr></table><table width=100% ><tr><td class=a14>
RECT rc;</td></tr></table><table width=100% ><tr><td class=a14>
static int xpos;//文本的横坐标</td></tr></table><table width=100% ><tr><td class=a14>
static char SlideText[]="欢迎使用屏幕保护程序!";</td></tr></table><table width=100% ><tr><td class=a14>
static UINT timerID;//定时器</td></tr></table><table width=100% ><tr><td class=a14>
switch (message)</td></tr></table><table width=100% ><tr><td class=a14>
{</td></tr></table><table width=100% ><tr><td class=a14>
case WM_CREATE:</td></tr></table><table width=100% ><tr><td class=a14>
xpos=0;</td></tr></table><table width=100% ><tr><td class=a14>
timerID=SetTimer(hWnd,1,250,NULL);//设置定时器</td></tr></table><table width=100% ><tr><td class=a14>
break;</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
case WM_ERASEBKGND:</td></tr></table><table width=100% ><tr><td class=a14>
//空操作,交由DefScreenSaverProc处理</td></tr></table><table width=100% ><tr><td class=a14>
break;</td></tr></table><table width=100% ><tr><td class=a14>
case WM_TIMER:</td></tr></table><table width=100% ><tr><td class=a14>
hDC=GetDC(hWnd);</td></tr></table><table width=100% ><tr><td class=a14>
//清屏</td></tr></table><table width=100% ><tr><td class=a14>
SetRect(&rc,0,0,GetSystemMetrics(SM_CXSCREEN),</td></tr></table><table width=100% ><tr><td class=a14>
GetSystemMetrics(SM_CYSCREEN))</td></tr></table><table width=100% ><tr><td class=a14>
FillRect(hDC,&rc,GetStockObject(BLACK_BRUSH));</td></tr></table><table width=100% ><tr><td class=a14>
//输出文本</td></tr></table><table width=100% ><tr><td class=a14>
SetTextColor(hDC,RGB(255*rand(),</td></tr></table><table width=100% ><tr><td class=a14>
255*rand(),255*rand()));</td></tr></table><table width=100% ><tr><td class=a14>
SetBkColor(hDC,RGB(0,0,0));</td></tr></table><table width=100% ><tr><td class=a14>
TextOut(hDC,xpos,GetSystemMetrics(SM_CYSCREEN)/2,</td></tr></table><table width=100% ><tr><td class=a14>
SlideText,strlen(SlideText));</td></tr></table><table width=100% ><tr><td class=a14>
//移动文本的横坐标</td></tr></table><table width=100% ><tr><td class=a14>
xpos=(xpos+10)%GetSystemMetrics(SM_CXSCREEN);</td></tr></table><table width=100% ><tr><td class=a14>
ReleaseDC(hWnd,hDC);</td></tr></table><table width=100% ><tr><td class=a14>
break;</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
case WM_DESTROY:</td></tr></table><table width=100% ><tr><td class=a14>
KillTimer(hWnd,timerID);//删除定时器</td></tr></table><table width=100% ><tr><td class=a14>
PostQuitMessage (0);</td></tr></table><table width=100% ><tr><td class=a14>
return 0;</td></tr></table><table width=100% ><tr><td class=a14>
}</td></tr></table><table width=100% ><tr><td class=a14>
return DefScreenSaverProc</td></tr></table><table width=100% ><tr><td class=a14>
(hWnd,message,wParam,lParam);</td></tr></table><table width=100% ><tr><td class=a14>
}</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
BOOL WINAPI ScreenSaverConfigureDialog</td></tr></table><table width=100% ><tr><td class=a14>
(HWND hWnd,UINT message,WPARAM wParam,</td></tr></table><table width=100% ><tr><td class=a14>
LPARAM lParam)</td></tr></table><table width=100% ><tr><td class=a14>
{//暂时不需要配置对话框,仅返回FALSE</td></tr></table><table width=100% ><tr><td class=a14>
return FALSE;</td></tr></table><table width=100% ><tr><td class=a14>
}</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
BOOL WINAPI RegisterDialogClasses</td></tr></table><table width=100% ><tr><td class=a14>
(HINSTANCE hInstance)</td></tr></table><table width=100% ><tr><td class=a14>
{//一般不需要,仅返回TRUE </td></tr></table><table width=100% ><tr><td class=a14>
return TRUE;</td></tr></table><table width=100% ><tr><td class=a14>
}</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr>
<td class=a14> 第二步,定义资源文件MiniSaver.rc。在VC环境下生成一图标,其ID为ID_APP。向字符串表加入ID为IDS_DESCRIPTION字符串“MiniSaver”,并作为字符串表第一项
</td>
</tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr>
<td class=a14> 第三步,编译连接并将生成的MiniSaver.EXE更名为MiniSaver.SCR拷入WINDOWS目录。注意,
编译前一定要在Project菜单的Setting中的Link选项中加上SCRNSAVE.LIB库。 </td>
</tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr>
<td class=a14> 第四步,控制面板的显示器设置中选择屏幕保护程序MiniSaver就可以使用了。注意不要急于配置屏幕保护程序,因为MiniSaver还有没提供配置对话框。
</td>
</tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr>
<td class=a14> 2.较完整的屏幕保护程序MySaver。该屏幕保护程序提供了配置对话框和关于对话框,并且使用了图象显示。读者可以将自己喜爱的图象加到资源中。
</td>
</tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr>
<td class=a14> 第一步,在VC5.0/6.0中建立32位应用工程(不选MFC WIZARD EXE)并定义资源文件MiniSaver.rc。
</td>
</tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr>
<td class=a14> 在VC环境下生成一图标,其ID为ID_APP。 </td>
</tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr>
<td class=a14> 向字符串表加入ID为IDS_DESCRIPTION字符串“MiniSaver”,并作为字符串表第一项。加入ID为idsAPPName字符串“Screen
Saver.MySaver”,说明见后面程序。 </td>
</tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr>
<td class=a14> 加入ID为IDB_BITMAP1的位图 </td>
</tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr>
<td class=a14> 加入ID为DLG_ABOUT对话框。仅有一ID为IDOK的按钮 </td>
</tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr>
<td class=a14> 加入ID为ID_APP。此对话的ID由SCRNSAVE.H定义且只能为DLG_SCRNSAVECONFIGURE。其中有ID为IDC_EDIT的EDIT控件,ID为IDOK,IDCANCEL和IDABOUT的按钮。
</td>
</tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr>
<td class=a14> 值得注意的是RESOURCE.H定义的ID_APP和DLG_SCRNSAVECONFIGURE可能与SCRNSAVE.H预定义的值冲突,可手动地将RESOURCE.H中的ID_APP设为100,DLG_SCRNSAVECONFIGURE设为2003即可。
</td>
</tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr>
<td class=a14> 第二步,建立如下的MySaver.CPP文件: </td>
</tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
#include #include </td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
#include "resource.h"</td></tr></table><table width=100% ><tr><td class=a14>
//声明三个基本的函数</td></tr></table><table width=100% ><tr><td class=a14>
LRESULT WINAPI ScreenSaveProc</td></tr></table><table width=100% ><tr><td class=a14>
(HWND,UINT,WPARAM,LPARAM);</td></tr></table><table width=100% ><tr><td class=a14>
BOOL WINAPI ScreenSaveConfigureDialog</td></tr></table><table width=100% ><tr><td class=a14>
(HWND,UINT,WPARAM,LPARAM);</td></tr></table><table width=100% ><tr><td class=a14>
BOOL WINAPI RegisterDialogClasses(HINSTANCE);</td></tr></table><table width=100% ><tr><td class=a14>
BOOL WINAPI AboutDialog(HWND,UINT,WPARAM,LPARAM);</td></tr></table><table width=100% ><tr><td class=a14>
//定义全局变量</td></tr></table><table width=100% ><tr><td class=a14>
char szIniFileName[]="control.ini";</td></tr></table><table width=100% ><tr><td class=a14>
//屏幕保护程序配置数据存放在control.ini文件</td></tr></table><table width=100% ><tr><td class=a14>
char szSection[32];</td></tr></table><table width=100% ><tr><td class=a14>
//屏幕保护程序配置数据在control.ini文件位置区名称</td></tr></table><table width=100% ><tr><td class=a14>
char szEntry[]="Slide Text:";</td></tr></table><table width=100% ><tr><td class=a14>
//屏幕保护程序配置数据项名称</td></tr></table><table width=100% ><tr><td class=a14>
char SlideText[256];</td></tr></table><table width=100% ><tr><td class=a14>
//屏幕保护程序配置数据,这里是文本内容</td></tr></table><table width=100% ><tr><td class=a14>
//定义三个基本的函数</td></tr></table><table width=100% ><tr><td class=a14>
LRESULT WINAPI ScreenSaverProc</td></tr></table><table width=100% ><tr><td class=a14>
(HWND hWnd,UINT message, WPARAM wParam,</td></tr></table><table width=100% ><tr><td class=a14>
LPARAM lParam)</td></tr></table><table width=100% ><tr><td class=a14>
{ static HBITMAP hBmp;//位图句柄</td></tr></table><table width=100% ><tr><td class=a14>
HDC hDC,hMemDC;//hMemDC是内存设备,缓存位图。</td></tr></table><table width=100% ><tr><td class=a14>
RECT rc;</td></tr></table><table width=100% ><tr><td class=a14>
static int xpos=0;</td></tr></table><table width=100% ><tr><td class=a14>
static UINT timerID;</td></tr></table><table width=100% ><tr><td class=a14>
switch (message)</td></tr></table><table width=100% ><tr><td class=a14>
{</td></tr></table><table width=100% ><tr><td class=a14>
case WM_CREATE:</td></tr></table><table width=100% ><tr><td class=a14>
//文件位置区名称szSection赋值为资源</td></tr></table><table width=100% ><tr><td class=a14>
idsAPPName。其中hMainInstance为//SCRNSAVE.LIB</td></tr></table><table width=100% ><tr><td class=a14>
定义的屏幕保护程序实例句柄</td></tr></table><table width=100% ><tr><td class=a14>
LoadString(hMainInstance,idsAPPName,</td></tr></table><table width=100% ><tr><td class=a14>
szSection,sizeof(szSection));</td></tr></table><table width=100% ><tr><td class=a14>
strcpy(SlideText,"欢迎使用屏幕保护程序!");</td></tr></table><table width=100% ><tr><td class=a14>
//读control.ini文件中[Screen Saver.MySaver]</td></tr></table><table width=100% ><tr><td class=a14>
区的配置数据到SlideText</td></tr></table><table width=100% ><tr><td class=a14>
GetPrivateProfileString(szSection,szEntry, </td></tr></table><table width=100% ><tr><td class=a14>
SlideText,SlideText,</td></tr></table><table width=100% ><tr><td class=a14>
sizeof(SlideText),szIniFileName); </td></tr></table><table width=100% ><tr><td class=a14>
//取位图</td></tr></table><table width=100% ><tr><td class=a14>
hBmp=LoadBitmap(hMainInstance,</td></tr></table><table width=100% ><tr><td class=a14>
MAKEINTRESOURCE(IDB_BITMAP1));</td></tr></table><table width=100% ><tr><td class=a14>
timerID=SetTimer(hWnd,1,250,NULL);</td></tr></table><table width=100% ><tr><td class=a14>
break;</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
case WM_ERASEBKGND:</td></tr></table><table width=100% ><tr><td class=a14>
hDC=GetDC(hWnd);</td></tr></table><table width=100% ><tr><td class=a14>
//显示位图</td></tr></table><table width=100% ><tr><td class=a14>
hMemDC=CreateCompatibleDC(hDC);</td></tr></table><table width=100% ><tr><td class=a14>
SelectObject(hMemDC,hBmp);</td></tr></table><table width=100% ><tr><td class=a14>
SetRect(&rc,0,0,GetSystemMetrics(SM_CXSCREEN),</td></tr></table><table width=100% ><tr><td class=a14>
GetSystemMetrics(SM_CYSCREEN)-25);</td></tr></table><table width=100% ><tr><td class=a14>
BitBlt(hDC,rc.top,rc.left,rc.right,rc.bottom,</td></tr></table><table width=100% ><tr><td class=a14>
hMemDC,rc.top,rc.left,SRCCOPY);</td></tr></table><table width=100% ><tr><td class=a14>
//清除底行,为文本显示作准备。</td></tr></table><table width=100% ><tr><td class=a14>
SetRect(&rc,0,GetSystemMetrics(SM_CYSCREEN)-25</td></tr></table><table width=100% ><tr><td class=a14>
GetSystemMetrics(SM_CXSCREEN),</td></tr></table><table width=100% ><tr><td class=a14>
GetSystemMetrics(SM_CYSCREEN));</td></tr></table><table width=100% ><tr><td class=a14>
FillRect(hDC,&rc,GetStockObject(BLACK_BRUSH));</td></tr></table><table width=100% ><tr><td class=a14>
ReleaseDC(hWnd,hDC);</td></tr></table><table width=100% ><tr><td class=a14>
DeleteDC(hMemDC);</td></tr></table><table width=100% ><tr><td class=a14>
return 1;</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
case WM_TIMER:</td></tr></table><table width=100% ><tr><td class=a14>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -