一。WIN32+OPENGL32+SCRNSAVE.H
二。目前实现功能:FLAG效果,随机切换图片。
三。存在问题:无法在“设置”对话框下对屏保施加影响,即:
ScreenSaverProc()与ScreenSaverConfigureDialog()的关系。具体代码如下:
LRESULT CALLBACK ScreenSaverProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam){
RECT rect;
switch (message) {
case WM_CREATE:
{
InitGLScreen(hWnd);
GetClientRect(hWnd,&rect);
ReSizeGLScene(rect.right, rect.bottom); // Set Up Our Perspective GL Screen
TimerID=SetTimer(hWnd,0,Speed,NULL);
break;
}
case WM_DESTROY:
{
PostQuitMessage(0);
if(TimerID)
KillTimer(hWnd,0);
KillGLWindow(hWnd);
break;
}
case WM_TIMER:
{
HDC hDC=GetDC(hWnd);
DrawGLScene();
SwapBuffers(hDC);
break;
} default:
return DefScreenSaverProc(hWnd,message,wParam,lParam);
} return 0;}
BOOL WINAPI ScreenSaverConfigureDialog(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam){
char *Temp=NULL;
switch (message)
{
case WM_INITDIALOG:
{
HWND hwndCombo = GetDlgItem(hDlg, IDC_COMBO1);
// Add an item for each food group.
for(int i=0;i<3;++i)
{
Temp=PicsShowName[i];
SendMessage(hwndCombo, CB_ADDSTRING, 0,(LPARAM) (LPCSTR)Temp);
}
SendDlgItemMessage(hDlg, IDC_COMBO1, CB_SETCURSEL, 0, 0); hwndCombo=GetDlgItem(hDlg,IDC_COMBO2);
for(i=0;i<3;++i)
{
Temp=Level[i];
SendMessage(hwndCombo, CB_ADDSTRING, 0,(LPARAM) (LPCSTR)Temp);
}
SendDlgItemMessage(hDlg, IDC_COMBO2, CB_SETCURSEL, 0, 0);
break;
}
case WM_COMMAND: { //处理 确定 按钮 if (LOWORD(wParam) == IDOK)
{
/////////////////////////////////////////////////////////////
HWND hwndCombo = GetDlgItem(hDlg, IDC_COMBO2);
//pos =SendMessage(hwndCombo,CB_GETCURSEL,0,0);
//Speed=(10+pos*10);
hwndCombo = GetDlgItem(hDlg, IDC_COMBO1);
pos = SendMessage(hwndCombo,CB_GETCURSEL,0,0);
////////////////////////////////////////////////////////////////
EndDialog(hDlg, LOWORD(wParam));
return TRUE;
}
else if(LOWORD(wParam) == IDCANCEL)
{
EndDialog(hDlg, LOWORD(wParam));
return TRUE;
}
break;
}
default:;
}
return FALSE;
}
/////////////////////////////////////////////////////////////////////////////////////
在斜杠圈住的区域,无论POS变量是全局的还是静态的,在运行时都无法在ScreenSaverProc()中起到作用,也就是我的屏保设置对话框没有作用,这是怎么回事,高手多指教!
二。目前实现功能:FLAG效果,随机切换图片。
三。存在问题:无法在“设置”对话框下对屏保施加影响,即:
ScreenSaverProc()与ScreenSaverConfigureDialog()的关系。具体代码如下:
LRESULT CALLBACK ScreenSaverProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam){
RECT rect;
switch (message) {
case WM_CREATE:
{
InitGLScreen(hWnd);
GetClientRect(hWnd,&rect);
ReSizeGLScene(rect.right, rect.bottom); // Set Up Our Perspective GL Screen
TimerID=SetTimer(hWnd,0,Speed,NULL);
break;
}
case WM_DESTROY:
{
PostQuitMessage(0);
if(TimerID)
KillTimer(hWnd,0);
KillGLWindow(hWnd);
break;
}
case WM_TIMER:
{
HDC hDC=GetDC(hWnd);
DrawGLScene();
SwapBuffers(hDC);
break;
} default:
return DefScreenSaverProc(hWnd,message,wParam,lParam);
} return 0;}
BOOL WINAPI ScreenSaverConfigureDialog(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam){
char *Temp=NULL;
switch (message)
{
case WM_INITDIALOG:
{
HWND hwndCombo = GetDlgItem(hDlg, IDC_COMBO1);
// Add an item for each food group.
for(int i=0;i<3;++i)
{
Temp=PicsShowName[i];
SendMessage(hwndCombo, CB_ADDSTRING, 0,(LPARAM) (LPCSTR)Temp);
}
SendDlgItemMessage(hDlg, IDC_COMBO1, CB_SETCURSEL, 0, 0); hwndCombo=GetDlgItem(hDlg,IDC_COMBO2);
for(i=0;i<3;++i)
{
Temp=Level[i];
SendMessage(hwndCombo, CB_ADDSTRING, 0,(LPARAM) (LPCSTR)Temp);
}
SendDlgItemMessage(hDlg, IDC_COMBO2, CB_SETCURSEL, 0, 0);
break;
}
case WM_COMMAND: { //处理 确定 按钮 if (LOWORD(wParam) == IDOK)
{
/////////////////////////////////////////////////////////////
HWND hwndCombo = GetDlgItem(hDlg, IDC_COMBO2);
//pos =SendMessage(hwndCombo,CB_GETCURSEL,0,0);
//Speed=(10+pos*10);
hwndCombo = GetDlgItem(hDlg, IDC_COMBO1);
pos = SendMessage(hwndCombo,CB_GETCURSEL,0,0);
////////////////////////////////////////////////////////////////
EndDialog(hDlg, LOWORD(wParam));
return TRUE;
}
else if(LOWORD(wParam) == IDCANCEL)
{
EndDialog(hDlg, LOWORD(wParam));
return TRUE;
}
break;
}
default:;
}
return FALSE;
}
/////////////////////////////////////////////////////////////////////////////////////
在斜杠圈住的区域,无论POS变量是全局的还是静态的,在运行时都无法在ScreenSaverProc()中起到作用,也就是我的屏保设置对话框没有作用,这是怎么回事,高手多指教!
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货