// Major unit lines CPen penDash; penDash.CreatePen(PS_SOLID, 1, m_gridColor); CPen* pOldPen = pDC->SelectObject(&penDash);
for (int x = 0-sourcex; x < rect.right; x += rect.right/10) { if (x != 0) { pDC->MoveTo(x, rect.top); pDC->LineTo(x, rect.bottom);
} }
for (int y = 0-sourcey; y < rect.bottom; y += rect.bottom/10) { if (y != 0) { pDC->MoveTo(rect.left, y); pDC->LineTo(rect.right, y); } } pDC->SelectObject(pOldPen);
Du kalder en metode i en klasse der har et member m_hDC og i den metode er der sat en assert m_hDC != NULL ind og den assertion fejler fordi m_hDC faktisk er NULL.
(og jeg har lidt svært ved at relatere det til det postede kode fragment)
jeg er ret sikker på at pdc ikke er null, jeg opretter det således CDC* pdc = m_st1.GetWindowDC(); MEN kan det tænkes at fejlen kommer fordi jeg har inddelt m_st1 i et par tusinde rect ?? og den derved ikke kan finde ud af det på en eller anden måde.
Hmmm, i hvilken funktion står du når du kalder DrawGrid(pdc, rcClient);?
(Jeg går ud fra at du koder til windows, din kode ser sådan ud) Hvis du bruger MFC (ser sådan ud når du bruger et CDC) må du jo kun tegne i et window når dets OnPaint bliver kaldet........
sjovt nok, nu virker det ligepludseligt. Efter et crash hvor mit classview ikke var tilgængeligt og jeg derefter rekontruerede classview, POP så virkede det igen. mystisk. Men måske er det blot en bekræftelse på hvad du netop sagde Tam :O)
Synes godt om
Ny brugerNybegynder
Din løsning...
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.