[c++] WINAPI Anwendung gerät aus der Form

Hallo!
Vielen Dank erstmal für die Antwort. Nur hab ich da gleich mal eine Frage:
Ist "HGDIOBJ" nur ein Synonym für das entsprechende Object, oder muss ich ein HGDIOBJ erzeugen?

Ich habe das Gefühl, dass die Anwendung stabiler läuft. Allerdings passiert durch geisteskrankes klicken (testen ^^) immernoch das gleiche. Mit einmal ist die Edit-Box in der oberen rechten Ecke des Desktops und die Anwendung wird rahmenlos.

Auf jeden Fall schonmal vielen dank für eure Hilfe :)
 
Ein HGDIOBJECT is quasi ein Basistyp für verschiedene GDI-Typen wie HBRUSH, HPEN, HBITMAP usw.

Es ist aber nach wie vor nur ein Handle, du mußt da nichts Besonderes für erstellen, der Code wie MCoder den gezeigt hat, reicht genau so.

Was mir da aber noch auffällt, du rufst da DeleteObject für pt und bg auf, aber wo erstellst du die? Das Erstellen sollte auch innerhalb der Darstell-Routine erfolgen.

Da sollte so etwas bei rauskommen:
Code:
case WM_PAINT:    
  hDC=BeginPaint(hWnd,&ps);                                            
  if(show)                      
  { 
    HBRUSH bg = CreateSolidBrush( xxx );
    HPEN pt = CreatePen( xxx );
    HGDIOBJ hbOld = SelectObject( hDC, bg );
    TextOut( hDC, 30 + 374, 30, "- 0° +", 6 );                      
    TextOut( hDC, 30 + 366, 255, "- 180° +", 8 );                                            
    val = 100.0 / value;                                            
    TmpX = XPt * val;                      
    TmpY = YPt * val;                                            
    Ellipse( hDC, 320, 50, 520, 250 );                      
    HGDIOBJ penOld = SelectObject( hDC, pt );                      
    Ellipse( hDC, 410 - (int)TmpY, 140 - (int)TmpX, 430 - (int)TmpY, 160 - (int)TmpX );                      
    sprintf( Gradval, "%d°", (int)degree );                      
    TextOut( hDC, 410 - (int)TmpY, 120 - (int)TmpX, Gradval, strlen( Gradval ) );                                               

    //  hier wieder aufräumen
    SelectObject( hDC, penOld );
    SelectObject( hdc, bg );

    DeleteObject( bg );                      
    DeleteObject( pt );                      
  }                                            
  EndPaint( hWnd, &ps );                          
  break;

Edit: Wann begreifen Forumsoftwareschreiber endlich, dass ein ruckelndes Forum besch***en programmiert ist, wenn es bei verschiedenen Leuten ruckelt. Das liegt dann nicht an deren "falscher" Wahl des Browsers, sondern an der besch****enen Programmierung (Mit anderen Worten, ich hasse das Geruckel mit dem IE7 und ich werde trotzdem nicht auf den Fanboy-FF umsteigen).
 
Zuletzt bearbeitet:
Hallo!
Wunderbar! Es scheint zu funktionieren :). Habe die Brushes und Pens am Anfang der WndProc definiert. Jetzt habe ich alles in die PAINT Nachricht gepackt und alles läuft super :).

Vielen dank für die Hilfe - wird wohl unbedingt Zeit, dass ich den Petzold anfange ^^ .

Greetz,

RadaZOng
 
Zurück