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


Anmelden zum Antworten