Screen Saver Konfigurationsdialog
-
Hi,
ich habe einen netten Screensaver programmiert und mich da an das Beispiel aus der MSDN gehalten. Der Saver läuft auch problemlos, leider wird der Konfigurationsdialog nicht angezeigt. Und das, obwohl ich bisher nur die Sachen aus der MSDN kopiert habe.
Hier die Dateien:
// SyMe.rc #include "resource.h" #include "afxres.h" DLG_SCRNSAVECONFIGURE DIALOG 6, 18, 160, 63 LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "Einstellungen" FONT 8, "MS Shell Dlg" BEGIN GROUPBOX "Wechselgeschwindigkeit",101,0,6,98,40 SCROLLBAR ID_SPEED,5,31,89,10 LTEXT "Schnell",103,6,21,30,8 LTEXT "Langsam",104,65,21,30,8 PUSHBUTTON "OK",ID_OK,117,10,40,14 PUSHBUTTON "Abbrechen",ID_CANCEL,117,32,40,14 END ID_APP ICON DISCARDABLE "SyMe.ico" // SyMe.def NAME SYME.SCR DESCRIPTION 'ScreenSaver' STUB 'WINSTUB.EXE' EXETYPE WINDOWS CODE MOVEABLE DATA MOVEABLE MULTIPLE HEAPSIZE 1024 STACKSIZE 4096 EXPORTS ScreenSaverProc ScreenSaverConfigureDialog // SyMe.cpp (Auszug) #include "windows.h" #include "scrnsave.h" #include "resource.h" #define MINVEL 1 /* minimum redraw speed value */ #define MAXVEL 10 /* maximum redraw speed value */ #define DEFVEL 5 /* default redraw speed value */ LONG lSpeed = DEFVEL; /* redraw speed variable */ extern HINSTANCE hMainInstance; /* screen saver instance handle */ //CHAR szAppName[80]; /* .ini section name */ CHAR szTemp[20]; /* temporary array of characters */ CHAR szRedrawSpeed[] = "Redraw Speed"; /* .ini speed entry */ BOOL WINAPI ScreenSaverConfigureDialog (HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { static HWND hSpeed; /* handle to speed scroll bar */ static HWND hOK; /* handle to OK push button */ ::MessageBeep(MB_ICONEXCLAMATION); switch(message) { case WM_INITDIALOG: /* Retrieve the application name from the .rc file. */ LoadString(hMainInstance, idsAppName, szAppName, 40); /* Retrieve the .ini (or registry) file name. */ LoadString(hMainInstance, idsIniFile, szIniFile, MAXFILELEN); /* Retrieve any redraw speed data from the registry. */ lSpeed = GetPrivateProfileInt(szAppName, szRedrawSpeed, DEFVEL, szIniFile); /* * If the initialization file does not contain an entry * for this screen saver, use the default value. */ if(lSpeed > MAXVEL || lSpeed < MINVEL) lSpeed = DEFVEL; /* Initialize the redraw speed scroll bar control. */ hSpeed = GetDlgItem(hDlg, ID_SPEED); SetScrollRange(hSpeed, SB_CTL, MINVEL, MAXVEL, FALSE); SetScrollPos(hSpeed, SB_CTL, lSpeed, TRUE); /* Retrieve a handle to the OK push button control. */ hOK = GetDlgItem(hDlg, ID_OK); ::MessageBeep(MB_ICONEXCLAMATION); return TRUE; case WM_HSCROLL: /* * Process scroll bar input, adjusting the lSpeed * value as appropriate. */ switch (LOWORD(wParam)) { case SB_PAGEUP: --lSpeed; break; case SB_LINEUP: --lSpeed; break; case SB_PAGEDOWN: ++lSpeed; break; case SB_LINEDOWN: ++lSpeed; break; case SB_THUMBPOSITION: lSpeed = HIWORD(wParam); break; case SB_BOTTOM: lSpeed = MINVEL; break; case SB_TOP: lSpeed = MAXVEL; break; case SB_THUMBTRACK: case SB_ENDSCROLL: return TRUE; break; } if ((int) lSpeed <= MINVEL) lSpeed = MINVEL; if ((int) lSpeed >= MAXVEL) lSpeed = MAXVEL; SetScrollPos((HWND) lParam, SB_CTL, lSpeed, TRUE); return TRUE; case WM_COMMAND: switch(LOWORD(wParam)) { case ID_OK: /* * Write the current redraw speed variable to * the .ini file. */ wsprintf(szTemp, "%ld", lSpeed); WritePrivateProfileString(szAppName, szRedrawSpeed, szTemp, szIniFile); case ID_CANCEL: EndDialog(hDlg, LOWORD(wParam) == ID_OK); return TRUE; } } return FALSE; } BOOL WINAPI RegisterDialogClasses(HANDLE hInst) { return TRUE; }
Ich hoffe, es kann mir jemand erklären woran das liegt und was ich anders machen muss.
Thanks im Voraus,
Shaggy