Veröffentlicht 20. April 200124 j Hallo Zusammen! Kann mir jemand sagen, warum bei mir folgendes Codefragment unter Win2000 nicht funktioniert? __________________________________________ // Deklaration der Hauptfensterklasse class CMainWindow : public CFrameWnd{ ... protected: CPalette m_Palette; ... }; // Implementerierung der Hauptfensterklasse int CMainWindow::OnCreate(LPCRTEATESTRUCT lpcs){ ... // Paletteneintrag erstellen LOGPALETTE lp; lp.palVersion = 0x300; lp.palNumEntries = 1; lp.palEntry[0].peRed = lp.palEntry[0].peGreen = lp.palEntry[0].peBlue = 0; // Eintrag setzen m_Palette.CreatePalette(&lp); // Timer setzen SetTimer(...); ... } BOOL CMainWnd::OnEraseBkgnd(CDC* pDC) { // Gesamten Clientbereich fluten CRect rcClient; GetClientRect(&rcClient); // Eigene Palette durchsetzen CPalette* pOldPalette = pDC->SelectPalette(&m_Palette, FALSE); pDC->RealizePalette(); // Zeichnen CBrush brush; Brush.CreateSolidBrush(PALETTEINDEX(0)); CBrush* pOldBrush = pDC->SelectObject(&brush); pDC->FillRect(&rcClient, &brush); // CDC zurücksetzen pDC->SelectObject(pOldBrush); pDC->SelectPalette(pOldPalette); return TRUE; } void CMainWindow::OnTimer() { PALETTEENTRY pe; // Paletteeintrag holen m_Palette.GetPaletteEntries(0, 1, &pe); // verändern pe.peRed++; // zurückschreiben m_Palette.AnimatePalette(0, 1, &pe); } ___________________________________________ Auf meiner W98-Maschine läuft die App ohne Beanstandungen. Unter W98 macht wie es scheint die Funktion "AnimatePalette()" Probleme.
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.