Problem mit Timer



  • Hi,
    ich habe ein Problem mit einem Timer. Beim Kompilieren erscheint immer folgender Fehler:
    fatal error C1001: INTERNER COMPILER- FEHLER
    Voran könnte dies liegen?
    Ohne den Timer funktioniert das Kompilieren fehlerlos.
    Ich will in einem Zeitabstand von 2 Sekunden mehrere Bilder auf einer Hintergrundbitmap anzeigen lassen.
    Der Quellcode sieht so aus:

    /////////////////////////////////////////////////////////////////////////////
    void CMeinDlg::OnPaint()
    {
    Bild[0].LoadBitmap(IDB_BITMAP2); //CBitmap-Objekt

    CPaintDC dc(this); // Gerätekontext für Zeichnen
    CPaintDC* pDC = &dc;
    BITMAP bmBackground; //BITMAP-Struktur bm deklarieren
    Bild[0].GetObject(sizeof(bmBackground),&bmBackground); //Größe und Adresse von CBitmap Bild[0] --> BITMAP bm
    CDC memDC;
    memDC.CreateCompatibleDC(pDC); //SpeicherDC initialisieren
    memDC.SelectObject(&Bild[0]); //Hintergrundbild --> Speicher
    RECT Rect;
    GetClientRect(&Rect);
    pDC->StretchBlt(0,0,Rect.right,Rect.bottom,&memDC,0,0,
    bmBackground.bmWidth,bmBackground.bmHeight,SRCCOPY);
    CDialog::OnPaint();

    Bild[1].LoadBitmap(IDB_BITMAP3); //CBitmap-Objekt
    Bild[2].LoadBitmap(IDB_BITMAP4); //CBitmap-Objekt

    int nXDest=0;
    int nYDest=0;
    int b=1; // Variable für Bild[zahl]
    int c=0;
    int e=1;
    int f=0; //Variable für bm
    int s=0; //Variable für CDC SpeicherDC

    //////////////////////////////////////TIMEREINSATZ///////////////////////////////////////////////////////////////////////

    SetTimer(ID_TIMER, 2000, NULL); // Timer wird nach 2 Sek ausgelöst

    void CMeinDlg::OnTimer(UINT nIDEvent)
    {
    if (nIDEvent == ID_TIMER)
    {

    for(c=0;c<=30;c++) {

    if(e==1) {

    b=1;
    e+=1;
    f+=1;
    s+=1;
    nXDest+=2;
    nYDest+=2;
    }
    else {
    b=2;
    e-=1;
    f+=1;
    s+=1;
    nXDest+=5;
    nYDest+=5;

    }

    BITMAP bm[100];
    Bild[b].GetObject( sizeof( bm[f] ), &bm[f] );
    CDC SpeicherDC[100];
    SpeicherDC[s].CreateCompatibleDC( &dc );
    SpeicherDC[s].SelectObject( &Bild[b] );
    CRect Rect2;
    GetClientRect( &Rect2 );

    dc.BitBlt(nXDest,nYDest, bm[f].bmWidth, bm[f].bmHeight,
    &SpeicherDC[s],0,0,SRCAND);

    CDialog::OnPaint();

    }

    KillTimer(ID_TIMER);
    }
    }
    }
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

    Bitte helft mir!
    Schon einmal Danke im Vorraus!
    Gruß Crabbe



  • Also dein Code sieht für mich ziemlich komisch aus, auch wenn man es wegen den fehlenden Code Tags schlecht erkennen kann (Schande über dich!). Scheinbar definierst du eine Methode in einer Anderen?

    Ansonsten ist das wirklich schlecht. Der Fehler bedeutet nicht unbedingt, das dein Code falsch ist, sondern das der Compiler bei compilieren abstürzt. Schau bitte in die Hilfe zu diesem Fehler, dort gibt es einige Hinweise um den Fehler evtl. zu vermeiden. Meist hilft es den kritischen Code durch anderen (funktionsgleichen) Code zu ersetzen, angefangen mit Zeilen tauschen.


Anmelden zum Antworten