30. september 2002 - 20:13Der er
3 kommentarer og 1 løsning
GID+ DrawRectangle
Jeg har en klasse, som skal håndtere nogle events. I dette tilfælde WM_LBUTTONDOWN. Problemet er bare, at der ikke bliver tegnet en eneste pixel i mit vindue... Det compiler og ved debug kommer jeg uden fejl igennem de tre nedenstående metoder. ---------------- WM_LBUTTONDOWN event: GraphicsEventHandler GEH; GEH.WindowHandler = hwnd; GEH.Inititialize(); GEH.DrawBoarder(5,5,50,50); GEH.Destroy();
Ved ikke om det er nok, men du kan ihvert fald starte med at bytte om på de her to linjer: Graphics mGraphics(mHDC); mHDC = BeginPaint(WindowHandler, &mPAINTSTRUCT);
Der bruger du mHDC i forbindelse med oprettelsen af mGraphics-objektet, men du tildeler først en værdi til mHDC EFTER du allede har brugt variablen.
Det er generelt en forkert måde at håndtere det på! Du skal ikke tegne noget ved et museklik, hvad så når vinduet bliver invalideret? Så er det jo væk igen...
Hvis du vil have en mængde objekter på skærmen (fx rektangler), skal du kave en datastruktur til dem (fx en vector). Når du så klikker med musen, tilføjer du et objekt til din struktur og invaliderer (medfører opdatering) dit vindue. Når du så modtager en WM_PAINT message, løber du din struktur igennem og tegner hvert objekt. Således kan du også gemme objekterne fra din struktur til en fil og læse dem ind igen...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.