Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: Outo bugi yrittäessäni piirtää suorakulmio näytölle.. (C++/Win)

Jarkko-C++ [15.03.2006 21:19:05]

#

Elikkä, ohjelmani olisis tarkoitus piirtää suorakulmio näytölle ja hieman jotakin omaan ikkunaankin. No aluksi se toimii niikuin pitääkin, mutta kun liikutan ikkunaa ni se saattaa tiletä niin, että koko koneen näyttö menee ihan sekasin. Ja toinen kysymys on että, onko mitään mahdollista komentoa updatettaa koko näyttöä? Ku toi boxi jonka piirrän jää usein oudosti ikkunoihin. Tässä on koodi, joka mul on WM_PAINT -eventis.

hdc = BeginPaint (hwnd, &ps) ;
            hdc = GetDC(hwnd);
			SetBkMode(hdc, TRANSPARENT);
			GetClientRect (hwnd, &rect);


			strcpy (bufferi, "Color Info :");
			TextOut (hdc, rect.left + 15, rect.bottom/2 - (40 +30), bufferi, strlen(bufferi));


			SelectObject (hdc, hpen) ;
			MoveToEx (hdc, rect.right/4 -50 ,rect.bottom/2 , &pt) ;
LineTo (hdc, rect.right/4 - 50, rect.bottom/2) ;

               hdc = GetDC(0);
               SelectObject (hdc, AreaPen) ;
			   MoveToEx (hdc, Screen1.x , Screen1.y ,&pt) ;
LineTo (hdc, Screen1.x, Screen2.y) ;
               LineTo (hdc, Screen2.x, Screen2.y);
           	   MoveToEx (hdc, RuneScreen2.x , Screen2.y , &pt) ;
               LineTo (hdc, Screen2.x, Screen1.y);
			   MoveToEx (hdc, RuneScreen2.x , Screen1.y , &pt) ;
		       LineTo (hdc, Screen1.x, Screen1.y); //
		       UpRuneScreen = 0;



			EndPaint (hwnd, &ps) ; // lopetetaan piirto

            return 0;

Metabolix [16.03.2006 12:20:26]

#

Ainakin siinä on virhe, että haet DC:n alussa kahteen kertaan. Myöskään et missään vaiheessa vapauta ruudun DC:tä. Tee siis näin:

hdc = BeginPaint(hwnd, &ps);
// Piirtoa ikkunaan...
EndPaint(hwnd, &ps);

hdc = GetDC(0);
// Koko ruudulle piirto
ReleaseDC(0,hdc);

Jarkko-C++ [16.03.2006 17:22:18]

#

Tuo virhe mulla olikin monessa paikassa ja vielä yksi toinenkii bugi minkä löysyin noita virhetiä korjailessani.. Kiitosksia, se toimii nyt.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta