cScaleWebImage.cls
上传用户:davilee3
上传日期:2015-04-22
资源大小:986k
文件大小:3k
源码类别:

浏览器

开发平台:

Visual Basic

  1. VERSION 1.0 CLASS
  2. BEGIN
  3.   MultiUse = -1  'True
  4.   Persistable = 0  'NotPersistable
  5.   DataBindingBehavior = 0  'vbNone
  6.   DataSourceBehavior  = 0  'vbNone
  7.   MTSTransactionMode  = 0  'NotAnMTSObject
  8. END
  9. Attribute VB_Name = "cScaleWebImage"
  10. Attribute VB_GlobalNameSpace = False
  11. Attribute VB_Creatable = True
  12. Attribute VB_PredeclaredId = False
  13. Attribute VB_Exposed = False
  14. Option Explicit
  15. Private WithEvents mWin As MSHTML.HTMLWindow2
  16. Attribute mWin.VB_VarHelpID = -1
  17. Private mDoc As MSHTML.HTMLDocument
  18. Private WithEvents mFrm As Form
  19. Attribute mFrm.VB_VarHelpID = -1
  20. Private WithEvents mCmd As CommandButton
  21. Attribute mCmd.VB_VarHelpID = -1
  22. Private mOverCommand As Boolean
  23. Private mAutoSize As Boolean
  24. Private oImgW&, oImgH&
  25. Public Sub DefaultSub()
  26. Attribute DefaultSub.VB_UserMemId = 0
  27. Debug.Print mWin.event.Type
  28. Select Case mWin.event.Type
  29.     Case "mouseout"
  30.         If Not mOverCommand Then mCmd.Visible = False
  31.     Case "mouseover"
  32.         If mAutoSize Then
  33.             mOverCommand = False
  34.             mCmd.Visible = True
  35.         Else
  36.             If mDoc.body.scrollHeight > mDoc.body.clientHeight Or _
  37.                 mDoc.body.scrollWidth > mDoc.body.clientWidth Then
  38.                     mOverCommand = False
  39.                     mCmd.Visible = True
  40.             End If
  41.         End If
  42. End Select
  43. End Sub
  44. Public Sub IniMe(nDoc As MSHTML.HTMLDocument, nfrm As Form)
  45. Set mDoc = nDoc
  46. Set mWin = mDoc.parentWindow
  47. Set mFrm = nfrm
  48. Set mCmd = mFrm.cmdScale
  49. mCmd.Picture = ScaleBtnImg2
  50. mCmd.ToolTipText = "将图片尺寸调整到窗口大小"
  51. oImgW = mDoc.images(0).Width
  52. oImgH = mDoc.images(0).Height
  53. End Sub
  54. Private Sub Class_Initialize()
  55. mOverCommand = False
  56. mAutoSize = False
  57. End Sub
  58. Private Sub mCmd_Click()
  59. Dim tImg As MSHTML.HTMLImg
  60. mAutoSize = Not mAutoSize
  61. If mAutoSize Then
  62.     mCmd.Picture = ScaleBtnImg1
  63.     mCmd.ToolTipText = "扩展为常规大小"
  64.     Call SizeImage
  65.    
  66. Else
  67.     mCmd.Picture = ScaleBtnImg2
  68.     mCmd.ToolTipText = "将图片尺寸调整到窗口大小"
  69.     Set tImg = mDoc.images(0)
  70.     tImg.clearAttributes
  71. End If
  72. End Sub
  73. Private Sub mcmd_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
  74. mOverCommand = True
  75. End Sub
  76. Private Sub SizeImage()
  77. On Error GoTo due
  78. Dim tImgW&, tImgH&, tBdW&, tBdH&
  79. Dim nImgW&, nImgH&
  80. Dim tImg As MSHTML.HTMLImg, tBd As MSHTML.HTMLBody
  81. Dim tRate As Single
  82. If mAutoSize Then
  83.     Set tBd = mDoc.body
  84.     If Not tBd Is Nothing Then
  85.         Set tImg = mDoc.images(0)
  86.         If Not tImg Is Nothing Then
  87.             tImgW = tImg.Width: tImgH = tImg.Height
  88.             tBdW = tBd.clientWidth: tBdH = tBd.clientHeight
  89.             
  90.             tRate = tImgW / tImgH
  91.             If tRate <= tBdW / tBdH Then
  92.                 nImgH = tBdH - tBd.topMargin - tBd.bottomMargin
  93.                 If nImgH > oImgH Then nImgH = oImgH
  94.                 tImg.Height = nImgH
  95.                 tImg.Width = tImg.Height * tRate
  96.             Else
  97.                 nImgW = tBdW - tBd.leftMargin - tBd.rightMargin
  98.                 If nImgW > oImgW Then nImgW = oImgW
  99.                 tImg.Width = nImgW
  100.                 tImg.Height = tImg.Width / tRate
  101.             End If
  102.             
  103.             
  104.         End If
  105.     End If
  106. End If
  107. Exit Sub
  108. due:
  109.     MsgBox Err.Description
  110. End Sub
  111. Private Sub mWin_onresize()
  112. Call SizeImage
  113. End Sub