Страница: 1 |
Такая вот заморочка, почти уверен что безнадежная. Рисую я в TextBox картинку, все ок, и скроллится в пределах окна, а вот когда с экрана сколл ее скрывает, она, естественно, обратно уже не восстанавливается. Вопрос - можно ли как-нибудь сохранить картинку в TextBox'е, не перерисовывая её постоянно, а чтоб как в RTB было?
Субклассируй и обрабатывай WM_PAINT. Статья про сабклассинг есть на этом сайте Да статьи по сабклассингу мне вне надобности, а вот чего я с WM_PAINT делать буду? Перерисовывать картинки что ли? Я хотел бы без этого. Пытался написать свой ocx, типа сам контрол, внутри которого PictureBox, внутри которого TextBox. Фон TextBox делаю прозрачным. Вроде как все ок, и рисовать можно, и писать, правда, скроллинг приходится делать самому, через Picture1.Move. Но. Опять же, рисовать картинки на PictureBox, независимо от PaintPicture или BitBlt - результат один - они не сохраняются при перерисовке. Я уж и не знаю че делать, прямо хоть штампуй массив Image, что, надо думать, дурость. Кто знает, как это вообще реализовать можно? Мда, видимо, придется все же кучу имиджей втискивать. Кстати, кто знает, сколько Image жрет ресурсов (оценочно)? К примеру, штук 100-200 не многовато будет для приложения? Только через WM_PAINT. Вообще то винда по такому принципу работает. Все окна и контролы перерисовываются в ответ на это сообщение. Только код перерисовки уже заложен в них. Они перерисовываются сами. Надеюсь смысл уловил. На Си нет кода, есть на МАСМ32. Интерфейс он строит на уровне системы. А это и есть Си. Этот код просто показывает рисунок на форме. WndProc proc hWin :DWORD, uMsg :DWORD, wParam :DWORD, lParam :DWORD .if uMsg == WM_COMMAND .elseif uMsg == WM_PAINT invoke Paint_Proc,hWin .endif invoke DefWindowProc,hWin,uMsg,wParam,lParam ret WndProc endp Paint_Proc proc hWin:DWORD LOCAL hDC :DWORD LOCAL hOld :DWORD LOCAL memDC :DWORD LOCAL ps :PAINTSTRUCT invoke BeginPaint,hWnd,ADDR ps mov hDC, eax invoke CreateCompatibleDC,hDC mov memDC, eax invoke SelectObject,memDC,hBmp mov hOld, eax invoke BitBlt,hDC,0,1,550,175,memDC,0,0,SRCCOPY invoke SelectObject,hDC,hOld invoke DeleteDC,memDC invoke EndPaint,hWin,ADDR ps ret Paint_Proc endp Страница: 1 |
Вопрос: Картинки в TextBox
Добавлено: 31.03.04 17:20
Автор вопроса: LamerOnLine | ICQ: 334781088
Ответы
Всего ответов: 4
Номер ответа: 1
Автор ответа:
crackoff
ICQ: 156165990
Вопросов: 12
Ответов: 229
Профиль | | #1
Добавлено: 01.04.04 08:14
Номер ответа: 2
Автор ответа:
LamerOnLine
ICQ: 334781088
Вопросов: 108
Ответов: 2822
Профиль | | #2
Добавлено: 01.04.04 08:57
Номер ответа: 3
Автор ответа:
LamerOnLine
ICQ: 334781088
Вопросов: 108
Ответов: 2822
Профиль | | #3
Добавлено: 01.04.04 13:43
Номер ответа: 4
Автор ответа:
@CyRax PTR
ICQ: 204447456
Вопросов: 28
Ответов: 664
Web-сайт:
Профиль | | #4
Добавлено: 03.04.04 05:07