Visual Basic, .NET, ASP, VBScript
 

   
   
     

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

Страница: 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, то распечатать
его как картинку не составит особого труда.
Option Explicit
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
Option Explicit
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
А нет у него свойства hWnd. Хотя это несомненно окно и найти его описатель можно
Распечататьь можно полюбому. Но вот только как ?

Ответить

Номер ответа: 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-сайт: sur.hotbox.ru/
 Профиль | | #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
все ок =) сабж снят,
СПАСИБО!!!

Ответить

Страница: 1 |

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



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