Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » OnPaint auslösen für Aktualisierung

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
15.06.2004, 14:18 Uhr
~Flapsi
Gast


Hi,

ich habe folgendes Problem:

In einem Dialogfenster habe ich eine "Leinwand" (ein static Steuerelement) aufgezogen, auf der ich zeichne. Klappt auch ganz prima. Wenn jedoch das fenster eines ANDEREN Programmes das Dialogfenster verdeckt und ich die ANDERE Anwendung schließe erfolgt kein Neuzeichnen in meiner Anwendung. Wie kann man detektieren, daß eine andere Anwendung aktiviert war (und somit auch ein anderer Thread) damit nach dem Schliessen dieser Anwendung in meiner Applikation ein OnPaint ausgelöst wird ???

Gruß

Flapsi
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
15.06.2004, 23:33 Uhr
mmc20
puss in boots


hi, soweit mir das bekannt ist, passiert genau das. OnPaint wird aufgerufen wenn das window verdeckt war.

wie zeichnest du denn?, wird das irgendwo gespeichert (also die punkte/linien) ? oder halt nur in einer "OnMouseButton"-function, wenn nichts gespeichert wird iss klar das das nachher weg ist.

zu dem thema giebts in "Visual C++ in 21 Tagen" (in E-Books) Tag 10 (SDI-Anwendung) ein beispiel, funktioniert dort mit "OnDraw"
(das kann man natürlich auch anders lösen, aber für einen anfänger IMHO gut erklärt)

ich würd das so machen:
C++:
void CDeinDlg::OnPaint()
{
    if (IsIconic())
    {
        CPaintDC dc(this); // Gerätekontext für Zeichnen

        SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);

        // Symbol in Client-Rechteck zentrieren
        int cxIcon = GetSystemMetrics(SM_CXICON);
        int cyIcon = GetSystemMetrics(SM_CYICON);
        CRect rect;
        GetClientRect(&rect);
        int x = (rect.Width() - cxIcon + 1) / 2;
        int y = (rect.Height() - cyIcon + 1) / 2;

        // Symbol zeichnen
        dc.DrawIcon(x, y, m_hIcon);
    }
    else
    {
        // hier jetzt das eigene zeichnen einfügen
        //
        //
        CDialog::OnPaint();
    }
}
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
16.06.2004, 22:47 Uhr
~Flapsi
Gast


Vielen Dank !

Habe den Fehler gefunden. Habe den Zeichenaufruf in der o.g. OnPaint Routine direkt am Anfang der Funktion (also noch vor dem "IsIconic" verschoben und rufe anschließend eine Aktualisierung meiner "Leinwand" mit ::UpdateWindow(HWND Leinwand) auf. Jetzt klappts....

Gruß

Flapsi
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ VC++ / MFC ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: