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;
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);
Tuo virhe mulla olikin monessa paikassa ja vielä yksi toinenkii bugi minkä löysyin noita virhetiä korjailessani.. Kiitosksia, se toimii nyt.
Aihe on jo aika vanha, joten et voi enää vastata siihen.