Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

23.09.2006, 19:29

Alternative zu WM_PAINT ?

Hi leutz,

Ich habn problem:
Ich zeichne etwas auf den Bildschirm was sich allerdings nicht in WM_PAINT unterbringen kann. Ich will aber nicht, dass alles nicht in WM_PAINT gezeichnete sofort verschwindet wenn ich es minimiere und wieder öffne, oder das Fenster die man übers Bild zieht Streifen hinterlassen.
Gib es da noch ne Alternative zu WM_PAINT ?

Schon mal danke im vorraus für eure Hilfe
TheProgrammer
Das Böse ist des Menschensbeste Kraft - Friedrich Nietzsche

2

23.09.2006, 20:52

WM_ERASEBACKGROUND
Devil Entertainment :: Your education is our inspiration
Der Spieleprogrammierer :: Community Magazin
Merlin - A Legend awakes :: You are a dedicated C++ (DirectX) programmer and you have ability to work in a team? Contact us!
Siedler II.5 RttR :: The old settlers-style is comming back!

Also known as (D)Evil

3

23.09.2006, 21:50

Wieso kannst du das nicht in WM_PAINT unterbringen? Dann mach hatl, das es geht.
wenn es in WM_PAINT nicht geht, wirds wohl auch in andern Nahcrichten nicht gehen, oder??
Die einzige andere alternative ist, es permanent neu zu zeichnen wie halt in einer Gameloop.
Allerdings sehe ich nciht, wo das Problem lieg,t das man es nicht in WM_PAINT zeichne können sollte.
Lieber dumm fragen, als dumm bleiben!

4

24.09.2006, 17:24

weil ich den ganzen block mit anweisungen in der WM_LBUTTONDOWN:
anweisung hab.
Das Böse ist des Menschensbeste Kraft - Friedrich Nietzsche

5

29.09.2006, 11:43

ich hab keine ahnung wie ich das jetzt lösen soll!

Ich hab mir jetzt ne variable gemacht. Wenn man eine linie zeichnet ist sie gleich 10 wenn man nen rechteck zeichnet = 20 u.s.w. In der WM_PAINT anweisung prüf ich jetzt was fürn wert die variable hat und zeichne bei den letzten positions variablen und setze dann meine variable auf null.

Das ist aber keine zufriedenstellende Lösung weil er so nur einmal das gezeichnete beibehält und beim zweiten mal ist es wieder weg und das ganze nur bei dem zu letzt gezeichneten Objekt...

Hat jemand ne Idee wie ich das beheben kann?
Das Böse ist des Menschensbeste Kraft - Friedrich Nietzsche

koschka

Community-Fossil

Beiträge: 2 862

Wohnort: Dresden

Beruf: Student

  • Private Nachricht senden

6

29.09.2006, 15:20

GetDC

ich weiss aber nicht richtig was du genau machen willst.

7

29.09.2006, 17:49

das hab ich. Aber sobald ich die größe des fensters verändere verschwindet immer noch alles und wenn ich ein fenster drüber ziehe zieht es immer noch streifen:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
            else if(auswahl==20 )
            {
                
                    hdc = GetDC (hwnd);
                    GetCursorPos(&point);
                    ScreenToClient(hwnd, &point);
                    paint.draw_pinsel(500,50, point, hwnd, hdc, 56 ,154 ,245);
                    ReleaseDC (hwnd, hdc);  
                    todo=20;
                    break;


und paint.drawpinsel:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
void  painting_options::draw_pinsel(int groeße_x, int groeße_y, POINT point, HWND__* hwnd, HDC__* hdc, int R, int G, int B)
{
    
    int x = 0 ,y=0;

    for(int x=point.x; x<point.x+groeße_x; x++)
    {
        for(int y=point.y; y<point.y+groeße_y; y++)
        {
            SetPixel (hdc, x, y, RGB (R,G,B));
        }
    }


oder hat du das mit dem GetDC anders gemeint
Das Böse ist des Menschensbeste Kraft - Friedrich Nietzsche

8

02.10.2006, 21:52

kann keiner das Problem lösen?

@koschka du hats gemeint ich soll GetDC benutzen das tue ich aber trotzdem verschwindet alles wenn ich die größe des fensters verändere
Das Böse ist des Menschensbeste Kraft - Friedrich Nietzsche

Osram

Alter Hase

Beiträge: 889

Wohnort: Weissenthurm

Beruf: SW Entwickler

  • Private Nachricht senden

9

03.10.2006, 11:38

Erkläre uns mal genau was Du willst.

Zunächst mal aus Benutzersicht. Z.B. "Wenn man klickt erscheint eine Linie von 0,0 zum Punkt wo man klickt. Wenn man nochmal klickt eine zweite".

Wenn es so etwas in der Art ist, ist Deine Idee, es in der LBUTTON Funktion zu speichern un in WM_PAINT zu malen gut. Dein Problem ist dass Du es auf Null setzt. Ausserdem hast Du nur eine Variable, kannst also nur eine Sache malen (das mag sein was Du willst oder auch nicht).
"Games are algorithmic entertainment."

10

03.10.2006, 17:28

alsooo:

Ich programmiere ein Mini Paint im moment. So...
Ich zeichne dinge in der LBUTTON funktion nicht nur linien alles mögliche. Aber es verschwindet halt alles beim minimieren u.s.w
Nur kann ich das nicht alles in die paint anweisung packen deshalb hab ich gefragt ob es da nicht noch ne andere möglichkeit gibt!
Das Böse ist des Menschensbeste Kraft - Friedrich Nietzsche

Werbeanzeige