Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Картинки в TextBox Добавлено: 31.03.04 17:20  

Автор вопроса:  LamerOnLine | ICQ: 334781088 

Такая вот заморочка, почти уверен что безнадежная.

Рисую я в TextBox картинку, все ок, и скроллится в пределах окна, а вот когда с экрана сколл ее скрывает, она, естественно, обратно уже не восстанавливается. Вопрос - можно ли как-нибудь сохранить картинку в TextBox'е, не перерисовывая её постоянно, а чтоб как в RTB было?

Ответить

  Ответы Всего ответов: 4  

Номер ответа: 1
Автор ответа:
 crackoff



ICQ: 156165990 

Вопросов: 12
Ответов: 229
 Профиль | | #1 Добавлено: 01.04.04 08:14

Субклассируй и обрабатывай WM_PAINT.

Статья про сабклассинг есть на этом сайте

Ответить

Номер ответа: 2
Автор ответа:
 LamerOnLine



ICQ: 334781088 

Вопросов: 108
Ответов: 2822
 Профиль | | #2 Добавлено: 01.04.04 08:57

Да статьи по сабклассингу мне вне надобности, а вот чего я с WM_PAINT делать буду?

Перерисовывать картинки что ли? Я хотел бы без этого.

Пытался написать свой ocx, типа сам контрол, внутри которого PictureBox, внутри которого TextBox. Фон TextBox делаю прозрачным. Вроде как все ок, и рисовать можно, и писать, правда, скроллинг приходится делать самому, через Picture1.Move.

Но. Опять же, рисовать картинки на PictureBox, независимо от PaintPicture или BitBlt - результат один - они не сохраняются при перерисовке. Я уж и не знаю че делать, прямо хоть штампуй массив Image, что, надо думать, дурость.

Кто знает, как это вообще реализовать можно?

Ответить

Номер ответа: 3
Автор ответа:
 LamerOnLine



ICQ: 334781088 

Вопросов: 108
Ответов: 2822
 Профиль | | #3 Добавлено: 01.04.04 13:43

Мда, видимо, придется все же кучу имиджей втискивать. Кстати, кто знает, сколько Image жрет ресурсов (оценочно)? К примеру, штук 100-200 не многовато будет для приложения? :)

Ответить

Номер ответа: 4
Автор ответа:
 @CyRax PTR



ICQ: 204447456 

Вопросов: 28
Ответов: 664
 Web-сайт: basicproduction.nm.ru/
 Профиль | | #4
Добавлено: 03.04.04 05:07

Только через 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 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам