Timer



  • Ich will aus einem Resourcendialog aus einen Timer starten. Hab das mit folgendem Code versucht:

    BOOL CALLBACK DlgMainProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
    {
    
        switch (uMsg)
        {
            case WM_INITDIALOG:
    
                            SetTimer(hDlg, 1, 100, NULL);
                SetFocus((HWND)wParam);
                break;
    
                    case WM_TIMER:
    
                            MessageBox(0, "Timer", "Timer", MB_OK);
                            break;
    
            case WM_CLOSE:
    
                            KillTimer(hDlg, 1);
                EndDialog(hDlg, 0);
                PostQuitMessage(0);
                break;
    
            default:
    
                return FALSE;
                break;
        }
    
        return TRUE;
    }
    

    Der Timer wird so aber nicht gestartet (auch nicht, wenn ich ein TimerProc verwende). Erst nachdem EndDialog(....) ausgeführt wurde, startet der Timer. Bei Fenster, die mit CreateWindow(....) erstellt wurden funktioniert alles einwandfrei. Gibt es irgendwas was man bei Timern in Dialogen anders machen / beachten muss ?



  • Das hat nichts mit Timern und Dialogen zu tun. Schau dir mal lieber an, was die DialogProc zurückgibt! Diese sollte nämlich NUR nach WM_INITDIALOG den Wert TRUE zurückgeben, und auch nur dann, wenn du darin nicht SetFocus() benutzt hast. In deinem Fall musst du also immer FALSE zurückgeben.


Anmelden zum Antworten