Allereerst, ik ben net begonnen met de GDI en ik heb mezelf al vrij veel handig weten te maken met de GDI api echter zit ik nog met 2 probleempjes waar ik nog geen oplossing op heb weten te vinden.
De betreffende code (Het gaan om een DialogBox aanroep, ik laat alleen de msghandler zien):
Allereerst
Het hele verhaal werkt op zich in de eerste fase. Echter gaat na een tijdje het programma flippen. Het blok wat ik met Bitblt naar het scherm kopieer blijft frontaal op het scherm staan. Het programma blijft hangen en hierdoor reageert de hele pc niet meer. Ik heb geen idee waar dit door zou kunnen komen. Iemand een idee? Ik vermoed dat de WM_PAINT niet juist is, ik heb echter nog geen bevestiging hiervoor weten te vinden.
Ten tweede
Ik kan geen kleuren kiezen behalve wit & zwart. Alle andere kleuren (bijv. CreateSolidBrush(RGB(255,0,0)) ) levert een vlak met allerlei grijze kleurtjes en stippellijntjes. Het lijkt allermist op een solid brush
. Ook hier heb ik nog niets over weten te vinden.
Iemand die me verder kan helpen hiermee?
De betreffende code (Het gaan om een DialogBox aanroep, ik laat alleen de msghandler zien):
C:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
| switch(message) { // We moeten het venster sluiten case WM_CLOSE: EndDialog(hwndDlg, wParam); return true; // Initialiseer het venster case WM_INITDIALOG: { hBufferDC = CreateCompatibleDC(GetDC(hwndDlg)); hBufferBitmap = CreateCompatibleBitmap(hBufferDC, BUFFER_SIZE_X, BUFFER_SIZE_Y); SelectObject(hBufferDC, hBufferBitmap); // Teken iets in de buffer RECT pRect; pRect.left = 0; pRect.right = BUFFER_SIZE_X-1; pRect.top = 0; pRect.bottom = BUFFER_SIZE_X-1; HBRUSH pBrush = CreateSolidBrush(RGB(0,0,0)); FillRect(hBufferDC, &pRect, pBrush); return true; } // Kopieer de buffer naar het scherm case WM_PAINT: BitBlt(GetDC(hwndDlg), 10, 10, BUFFER_SIZE_X, BUFFER_SIZE_X, hBufferDC, 0, 0, SRCCOPY); return true; // Voer de opruimwerkzaamheden uit case WM_DESTROY: ReleaseDC(hwndDlg, hBufferDC); return true; } |
Allereerst
Het hele verhaal werkt op zich in de eerste fase. Echter gaat na een tijdje het programma flippen. Het blok wat ik met Bitblt naar het scherm kopieer blijft frontaal op het scherm staan. Het programma blijft hangen en hierdoor reageert de hele pc niet meer. Ik heb geen idee waar dit door zou kunnen komen. Iemand een idee? Ik vermoed dat de WM_PAINT niet juist is, ik heb echter nog geen bevestiging hiervoor weten te vinden.
Ten tweede
Ik kan geen kleuren kiezen behalve wit & zwart. Alle andere kleuren (bijv. CreateSolidBrush(RGB(255,0,0)) ) levert een vlak met allerlei grijze kleurtjes en stippellijntjes. Het lijkt allermist op een solid brush
Iemand die me verder kan helpen hiermee?