Может тема и проскакивала тут, но я не нашел, посему и спрашиваю: Есть код. Я виртуально делаю разметку по квадратам на некотором rect1. Цвет у того rect1, допустим 1. Если повозить мышь по нему, то появится мальнеький rent2 с цветом 2. То есть за мышкой бегает квадратик у которого левая верхняя координата кратна некоторому числу. Как делал: WM_PAINT рисует rect1 WM_MOUSEMOVE следит за мышью и рисует rect2. Но встает вопрос о перезакрышивание rect2 если мышь покидает его (т.е. чтобы не рисовать по rect1 дофига rect2). Я просто заново ресую как в WM_PAINT (размер правда сильно увеличивается) Но тут возникает ошибка: если некоторое время по елозить мышь по этому полю - поле больше н закрышивается. Массивы pole1, mclolor - остаются неизменными. Просто теряется hdc. Думаю, я просто не успеваю закрыть его и возникает коллизия обращения. сорс и бинарик в аттаче. _57996987__seawar00.zip
Спасибо большое - помогло. Я думал что DeletObject должен использоваться в паре с SelectObject(). Так выглядит исправленный сорс: Код (Text): ... SetRect(&r, x + 10, y + 20, x + 10 + 20, y + 20 + 20); hb = CreateSolidBrush(0x0000FF00); FillRect(hdc, &r, hb); DeleteObject(hb); ...
SelectObject тоже хитрая штука - перед разрушением (DeleteDC) или возвратом (ReleaseDC) - все выбранные объекты должны быть возвращены через тот же SelectObject: Код (Text): HBRUSH hBrushFromDC = (HBRUSH) SelectObject (hDC, hYourOwnBrush); //... paint with your own brush... SelectObject (hDC, hBrushFromDC); ReleaseDC (hwnd, hDC);