Visual Basic, .NET, ASP, VBScript
 

   
   
     

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

Страница: 1 |

 

  Вопрос: скриншот Picture Добавлено: 12.12.07 17:21  

Автор вопроса:  Roma
Такой вопрос:
Есть Picture1, он служит как контейнер для контролов.
Как сделать скриншот этого Picture1 со всеми контролами, располагающимися на нем, если есть вероятность того, что он (Picture1) может быть за границами экрана (пользователь передвинул форму и часть Picture1 не видна, т.е. стандартное GetWindowRect - StretchBlt - ReleaseDC – не проходит), и что пользователь уменьшил размеры формы и Picture1 больше формы?

Ответить

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

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



Вопросов: 0
Ответов: 454
 Профиль | | #1 Добавлено: 12.12.07 18:15
лень писать полноценный пример, но вот как заготовка...

Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Const WM_PAINT = &HF
Private Const WM_PRINT = &H317

Private Sub Command1_Click()
    SendMessage Picture1.hwnd, WM_PRINT, Form1.hDC, 0
    Dim ctl As Control
    
    For Each ctl In Controls
     If ctl.Container Is Picture1 Then
         Debug.Print ctl.Name
         SendMessage ctl.hwnd, WM_PAINT, Form1.hDC, 0
      End If
    Next
End Sub

На самом деле надо бы каждое дочернее окно печатать в memory DC и потом BitBlt на основной контекст с учетом положения в контейнере.

Ответить

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



Вопросов: 3
Ответов: 15
 Профиль | | #2 Добавлено: 12.12.07 18:25
2 EUGY
Не подходит. Среди контролов есть такие, у которых нет hwnd - Shockwave Flash.

Ответить

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



Вопросов: 0
Ответов: 454
 Профиль | | #3 Добавлено: 12.12.07 18:44
Ну, hwnd у него положим есть, получить его и остальные можно например через EnumChildWindows.

Ответить

Номер ответа: 4
Автор ответа:
 Roma



Вопросов: 3
Ответов: 15
 Профиль | | #4 Добавлено: 12.12.07 18:48
Спасибо, буду копаться.

Ответить

Страница: 1 |

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



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