Страница: 1 |
Страница: 1 |
Вопрос: Как распечатать Frame ?
Добавлено: 25.03.07 21:38
Автор вопроса: HAB
Как распечатать Frame ?
Ответы
Всего ответов: 14
Номер ответа: 1
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #1
Добавлено: 26.03.07 01:10
Что имеется ввиду? Фрейм на форме или речь идёт о HTML?
Номер ответа: 2
Автор ответа:
ZagZag
ICQ: 295002202
Вопросов: 87
Ответов: 1684
Профиль | | #2
Добавлено: 26.03.07 01:24
Я так думаю что всетаки на форме.
Сам не пробовал, но если у фрейма можно получить hDC, то распечатать
его как картинку не составит особого труда.
Private Declare Function GetDC Lib "user32.dll" (ByVal hwnd As Long) As Long
Private Sub Form_Load()
MsgBox GetDC(Frame1.hwnd)
End Sub
Номер ответа: 3
Автор ответа:
HAB
Вопросов: 18
Ответов: 57
Профиль | | #3
Добавлено: 26.03.07 12:20
Фрейм на форме
Номер ответа: 4
Автор ответа:
HAB
Вопросов: 18
Ответов: 57
Профиль | | #4
Добавлено: 26.03.07 12:24
Private Declare Function GetDC Lib "user32.dll" (ByVal hwnd As Long) As Long
Private Sub Form_Load()
MsgBox GetDC(Frame1.hwnd)
End Sub
не получилось
Номер ответа: 5
Автор ответа:
Viper
ICQ: 249094859
Вопросов: 0
Ответов: 310
Профиль | | #5
Добавлено: 26.03.07 14:28
А нет у него свойства hWnd. Хотя это несомненно окно и найти его описатель можно
Номер ответа: 6
Автор ответа:
HAB
Вопросов: 18
Ответов: 57
Профиль | | #6
Добавлено: 26.03.07 15:34
Номер ответа: 7
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #7
Добавлено: 26.03.07 18:00
Ну примерно так:
For Each перебираем, находим нужный форейм, определяем его размеры и координаты. Потом скопировать через BitBlt в пикчбокс нужную область формы (там где фрейм), ну а распечатать пиксебокс много ума ненадо...
Номер ответа: 8
Автор ответа:
ZagZag
ICQ: 295002202
Вопросов: 87
Ответов: 1684
Профиль | | #8
Добавлено: 26.03.07 18:49
У меня что басик особенный?
Тот пример что я кинул выше у меня выдает hDC фрейма.
Номер ответа: 9
Автор ответа:
HAB
Вопросов: 18
Ответов: 57
Профиль | | #9
Добавлено: 27.03.07 08:06
ну может быть и выдает но как распечатать ?
Номер ответа: 10
Автор ответа:
Viper
ICQ: 249094859
Вопросов: 0
Ответов: 310
Профиль | | #10
Добавлено: 27.03.07 10:21
BitBlt собственно и даст возможность распечатать (скопировать) все у чего есть DC на все у чего есть DC.
Номер ответа: 11
Автор ответа:
HAB
Вопросов: 18
Ответов: 57
Профиль | | #11
Добавлено: 27.03.07 11:56
как то я такое не могу понять
т.е. такой команды как
frame1.print нет чтоли ?
Номер ответа: 12
Автор ответа:
Sur
ICQ: 1249088
Вопросов: 10
Ответов: 304
Web-сайт:
Профиль | | #12
Добавлено: 27.03.07 14:01
>как то я такое не могу понять
вот, спер тебе пример из гугла:
Option Explicit
Private Declare Function GetDC Lib "user32" _
 ByVal hwnd As Long) As Long
Private Declare Function ReleaseDC Lib "user32" _
 ByVal hwnd As Long, ByVal hdc As Long) As Long
Private Declare Function BitBlt Lib "gdi32" (ByVal hDestDC _
As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As _
Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal _
xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long
Private Sub Form_Load()
Picture1.AutoRedraw = True
'Picture1.Visible = False
'Picture1.BorderStyle = 0
End Sub
Private Sub Command1_Click()
Dim hFrameDC As Long, oldmode As Long
oldmode = Me.ScaleMode
Me.ScaleMode = vbPixels
Picture1.Width = Frame1.Width
Picture1.Height = Frame1.Height
hFrameDC = GetDC(Frame1.hwnd)
BitBlt Picture1.hdc, 0, 0, Frame1.Width, Frame1.Height, _
hFrameDC, 0, 0, vbSrcCopy
ReleaseDC Frame1.hwnd, hFrameDC
Picture1.Refresh
Me.ScaleMode = oldmode
Exit Sub ' <<<<<<<< JF TEST
' ----
Printer.ScaleMode = vbInches
Printer.Print ' open the printer object
' print the Frame at location 1,1 (inches)
Printer.PaintPicture Picture1.Image, 1, 1
Printer.EndDoc
End Sub
Номер ответа: 13
Автор ответа:
Viper
ICQ: 249094859
Вопросов: 0
Ответов: 310
Профиль | | #13
Добавлено: 27.03.07 15:09
Чей то у меня в ответе нумер 5 насчет отстутствия hWnd у Frame мягко говоря неверно... есть он у него
Номер ответа: 14
Автор ответа:
HAB
Вопросов: 18
Ответов: 57
Профиль | | #14
Добавлено: 27.03.07 17:56
все ок сабж снят,
СПАСИБО!!!