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

浏览器

开发平台:

Visual Basic

  1. VERSION 5.00
  2. Begin VB.Form frmMain 
  3.    BorderStyle     =   0  'None
  4.    Caption         =   "Form1"
  5.    ClientHeight    =   5460
  6.    ClientLeft      =   0
  7.    ClientTop       =   0
  8.    ClientWidth     =   2880
  9.    BeginProperty Font 
  10.       Name            =   "新宋体"
  11.       Size            =   9
  12.       Charset         =   134
  13.       Weight          =   400
  14.       Underline       =   0   'False
  15.       Italic          =   0   'False
  16.       Strikethrough   =   0   'False
  17.    EndProperty
  18.    LinkTopic       =   "Form1"
  19.    ScaleHeight     =   364
  20.    ScaleMode       =   3  'Pixel
  21.    ScaleWidth      =   192
  22.    ShowInTaskbar   =   0   'False
  23.    StartUpPosition =   3  'Windows Default
  24.    Begin VB.PictureBox pctSlide 
  25.       BorderStyle     =   0  'None
  26.       HasDC           =   0   'False
  27.       Height          =   135
  28.       Left            =   180
  29.       ScaleHeight     =   9
  30.       ScaleMode       =   3  'Pixel
  31.       ScaleWidth      =   81
  32.       TabIndex        =   0
  33.       Top             =   2760
  34.       Width           =   1215
  35.    End
  36. End
  37. Attribute VB_Name = "frmMain"
  38. Attribute VB_GlobalNameSpace = False
  39. Attribute VB_Creatable = False
  40. Attribute VB_PredeclaredId = True
  41. Attribute VB_Exposed = False
  42. '---------------------------------------------------------------------------------------
  43. ' Module    : frmMain
  44. ' DateTime  : 2005-6-13 11:49
  45. ' Author    : Lingll
  46. ' Purpose   :
  47. '---------------------------------------------------------------------------------------
  48. Option Explicit
  49. Private Declare Function LoadMenuIndirect Lib "user32.dll" Alias "LoadMenuIndirectA" (ByVal lpMenuTemplate As Long) As Long
  50. Private Declare Function DestroyMenu Lib "user32.dll" (ByVal hMenu As Long) As Long
  51. Private Declare Function GetSubMenu Lib "user32.dll" (ByVal hMenu As Long, ByVal nPos As Long) As Long
  52. Private Declare Function RemoveMenu Lib "user32.dll" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long
  53. Private Const MF_BYPOSITION As Long = &H400&
  54. Private Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByRef lParam As Any) As Long
  55. Private Const WM_USER As Long = &H400
  56. Private Const TTM_SETTITLEW As Long = (WM_USER + 33)
  57. Private Const TTM_SETTITLEA As Long = (WM_USER + 32)
  58. Private WithEvents m_cRss As cRss
  59. Attribute m_cRss.VB_VarHelpID = -1
  60. Private m_StartLoad As Boolean
  61. Private WithEvents m_cLvwLinks As LCmnCtrl32.cSysListView32
  62. Attribute m_cLvwLinks.VB_VarHelpID = -1
  63. Private WithEvents m_cLvwRssz As LCmnCtrl32.cSysListView32
  64. Attribute m_cLvwRssz.VB_VarHelpID = -1
  65. Private WithEvents m_cTbrMain As LCmnCtrl32.cToolBar
  66. Attribute m_cTbrMain.VB_VarHelpID = -1
  67. Private m_cPmnRssz As cPopMenu
  68. Private m_cPmnOption As cPopMenu
  69. Private Const m_TbrID_Rss As Long = 101
  70. Private Const m_TbrID_Option As Long = 102
  71. Private m_RssGroupIndex&
  72. Private WithEvents m_cMove As cMoveControl
  73. Attribute m_cMove.VB_VarHelpID = -1
  74. Private Sub Form_Initialize()
  75. m_StartLoad = False
  76. End Sub
  77. Private Sub Form_Load()
  78. Dim i&
  79. Set m_cRss = New cRss
  80. Call LoadRssGroupInfo
  81. Call IniLvw
  82. Call IniTbr
  83. Call IniPopMnu
  84. Set m_cMove = New cMoveControl
  85. m_cMove.IniMe pctSlide, False, True, 7
  86. pctSlide.ZOrder
  87. End Sub
  88. '---------------------------------------------------------------------------------------
  89. ' Procedure : StartLoadRss
  90. ' DateTime  : 2005-5-30 18:40
  91. ' Author    : Lingll
  92. ' Purpose   :
  93. '---------------------------------------------------------------------------------------
  94. Private Sub StartLoadRss(vUrl$)
  95. m_StartLoad = True
  96. With m_cLvwLinks
  97.     .ClearItem
  98.     .AddItem "Loading..."
  99.     .SetColumnWidth 0, -1
  100.     .Enabled = False
  101. End With
  102. m_cRss.Url = vUrl
  103. m_cRss.ReLoad
  104. End Sub
  105. Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
  106. Set m_cLvwLinks = Nothing
  107. End Sub
  108. Private Sub Form_Resize()
  109. On Error Resume Next
  110. Static tRc As RECT
  111. Static tVal&
  112. If Not m_cTbrMain Is Nothing Then
  113.     tVal = m_cTbrMain.GetToolbarHeight
  114.     m_cTbrMain.MoveToolbar 0, 0, Me.ScaleWidth, tVal, False, False
  115. End If
  116. If Not m_cLvwRssz Is Nothing Then
  117.     GetWindowRect m_cLvwRssz.hwnd, tRc
  118.     m_cLvwRssz.Move 0, tVal, Me.ScaleWidth, tRc.Bottom - tRc.Top ' Me.ScaleHeight / 3 - m_cTbrMain.GetToolbarHeight
  119. End If
  120. tVal = tVal + tRc.Bottom - tRc.Top + 10
  121. pctSlide.Move 0, tVal - 10, Me.ScaleWidth
  122. If Not m_cLvwLinks Is Nothing Then
  123.     
  124.     
  125.     m_cLvwLinks.Move 0, tVal, Me.ScaleWidth, Me.ScaleHeight - tVal
  126.     'm_cLvwLinks.Move 0, Me.ScaleHeight / 3, Me.ScaleWidth, Me.ScaleHeight / 3 * 2
  127. End If
  128. End Sub
  129. Private Sub m_cLvwLinks_Click(iItem As Long, iSubItem As Long, X As Long, Y As Long)
  130. 'On Error Resume Next
  131. 'Dim tIndex1&, tIndex2&, tIndex3&
  132. 'tIndex1 = cmbGroups.ListIndex + 1
  133. 'If tIndex1 > 0 And tIndex1 <= RssGCnt Then
  134. '    tIndex2 = m_cLvwRssz.GetNextItem(-1, LVNI_SELECTED) + 1
  135. '    If tIndex2 > 0 And tIndex2 <= RssGroups(tIndex1).Count Then
  136. '        If iItem >= 0 Then
  137. '            gLEInfo.NewWebWindow m_cRss.GetBmUrl(iItem + 1)
  138. '        End If
  139. '    End If
  140. 'End If
  141. Call ClickLinks(iItem)
  142. End Sub
  143. Private Sub m_cLvwLinks_KeyDownd(keycode As Long)
  144. If keycode = vbKeyReturn Then
  145.     Call ClickLinks(m_cLvwLinks.GetNextItem(-1, LVNI_SELECTED))
  146. End If
  147. End Sub
  148. '---------------------------------------------------------------------------------------
  149. ' Procedure : ClickLinks
  150. ' DateTime  : 2005-6-1 11:35
  151. ' Author    : Lingll
  152. ' Purpose   : open rss link
  153. '---------------------------------------------------------------------------------------
  154. Private Sub ClickLinks(iItem&)
  155. Dim tWeb As SHDocVw.WebBrowser
  156. If iItem >= 0 Then
  157.     Set tWeb = gLEInfo.GetForegroundWebObj
  158.     If Not tWeb Is Nothing Then
  159.         tWeb.Navigate m_cRss.GetBmUrl(iItem + 1)
  160.     Else
  161.         gLEInfo.NewWebWindow m_cRss.GetBmUrl(iItem + 1)
  162.     End If
  163. End If
  164. End Sub
  165. Private Sub m_cLvwLinks_SetTip(iItem As Long, vTip As String)
  166. If iItem >= 0 Then
  167.     SendMessage m_cLvwLinks.GetToolTipHwnd, TTM_SETTITLEA, 0, ByVal Mid2(m_cRss.GetBmTitle(iItem + 1), 1, 90, "...")
  168.     vTip = m_cRss.GetBmPubdate(iItem + 1) & vbNewLine & _
  169.             m_cRss.GetBmDescription(iItem + 1)
  170. End If
  171. End Sub
  172. Private Sub m_cLvwRssz_Click(iItem As Long, iSubItem As Long, X As Long, Y As Long)
  173. 'Call LoadRssLinks(iItem + 1)
  174. End Sub
  175. '---------------------------------------------------------------------------------------
  176. ' Procedure : LoadRssLinks
  177. ' DateTime  : 2005-6-1 15:58
  178. ' Author    : Lingll
  179. ' Purpose   : 加载rss links
  180. '---------------------------------------------------------------------------------------
  181. Private Sub LoadRssLinks(index&)
  182. Dim tIndex1&
  183. tIndex1 = m_RssGroupIndex
  184. If tIndex1 > 0 And tIndex1 <= RssGCnt Then
  185.     If index > 0 And index <= RssGroups(tIndex1).Count Then
  186.         Call StartLoadRss(RssGroups(tIndex1).Rssz(index).Link)
  187.     End If
  188. End If
  189. End Sub
  190. Private Sub m_cLvwRssz_ItemChange(vIndex As Long, uNewState As LCmnCtrl32.clveLVIS, uOldState As LCmnCtrl32.clveLVIS)
  191. If (uNewState And LVIS_SELECTED) = LVIS_SELECTED Then
  192.     'If (uOldState And  ) = 0 Then
  193.         Call LoadRssLinks(vIndex + 1)
  194.     'End If
  195. End If
  196. End Sub
  197. Private Sub m_cLvwRssz_KeyDownd(keycode As Long)
  198. 'If keycode = vbKeyReturn Then
  199. '    Call LoadRssLinks(m_cLvwRssz.GetNextItem(-1, LVNI_SELECTED) + 1)
  200. 'End If
  201. End Sub
  202. Private Sub m_cMove_MoveEnd(offsetX As Long, offsetY As Long)
  203. Dim tRc As RECT
  204. Dim tpt As POINTAPI
  205. GetWindowRect m_cLvwRssz.hwnd, tRc
  206. m_cLvwRssz.Move 0, 0, Me.ScaleWidth, tRc.Bottom - tRc.Top + offsetY
  207. Call Form_Resize
  208. 'tPt.x = tRc.Left: tPt.y = tRc.Top
  209. 'ScreenToClient m_cLvwRssz.hwnd
  210. End Sub
  211. Private Sub m_cRss_Changed()
  212. Dim tcnt&
  213. Dim i&
  214. If m_StartLoad Then
  215.     tcnt = m_cRss.GetBmCount
  216.     m_cLvwLinks.ClearItem
  217.     For i = 1 To tcnt
  218.         m_cLvwLinks.AddItem LTrim(Str(i)) & ". " & m_cRss.GetBmTitle(i), , 0
  219.     Next i
  220.     m_cLvwLinks.SetColumnWidth 0, -1
  221.     m_cLvwLinks.Enabled = True
  222.     
  223.     m_StartLoad = False
  224. End If
  225. End Sub
  226. '---------------------------------------------------------------------------------------
  227. ' Procedure : LoadRssGroupInfo
  228. ' DateTime  : 2005-5-30 21:59
  229. ' Author    : Lingll
  230. ' Purpose   :
  231. '---------------------------------------------------------------------------------------
  232. Private Sub LoadRssGroupInfo(Optional vPath$)
  233. Dim tIni As cINIFile
  234. Dim i&, j&
  235. If LenB(vPath) = 0 Then
  236.     vPath = App.Path
  237.     If Right(vPath, 1) <> "" Then
  238.         vPath = vPath & ""
  239.     End If
  240.     vPath = vPath & "RssGps.ini"
  241. End If
  242. Set tIni = New cINIFile
  243. tIni.bffSize = 1024
  244. tIni.IniFile = vPath
  245. RssGCnt = tIni.ReadInt("Info", "Count")
  246. If RssGCnt > 0 Then
  247.     ReDim RssGroups(0 To RssGCnt)
  248.     For i = 1 To RssGCnt
  249.         RssGroups(i).Title = tIni.ReadKey("Group_" & LTrim(Str(i)), "GTitle")
  250.         RssGroups(i).Count = tIni.ReadInt("Group_" & LTrim(Str(i)), "Count")
  251.         If RssGroups(i).Count > 0 Then
  252.             ReDim RssGroups(i).Rssz(0 To RssGroups(i).Count)
  253.             For j = 1 To RssGroups(i).Count
  254.                 RssGroups(i).Rssz(j).Title = tIni.ReadKey("Group_" & Trim(Str(i)), "Title_" & LTrim(Str(j)))
  255.                 RssGroups(i).Rssz(j).Link = tIni.ReadKey("Group_" & Trim(Str(i)), "Url_" & LTrim(Str(j)))
  256.             Next j
  257.         Else
  258.             RssGroups(i).Count = 0
  259.         End If
  260.     Next i
  261. Else
  262.     RssGCnt = 0
  263.     ReDim RssGroups(0 To 0)
  264. End If
  265. End Sub
  266. Private Sub IniLvw()
  267. On Error Resume Next
  268. Set m_cLvwLinks = gLEInfo.CreateLCmnCtrl(cmCtrl_ListView)
  269. With m_cLvwLinks
  270.     .Create Me.hwnd, LVS_REPORT Or LVS_NOCOLUMNHEADER Or LVS_SHOWSELALWAYS Or LVS_SINGLESEL, LVS_EX_INFOTIP, 0, 0, Me.ScaleWidth, 200
  271.     .SetImgList LVSIL_SMALL, 0, 16, 16, LoadResPicture(101, vbResBitmap).Handle, &HFF00FF
  272.     .AddColumn 0, "name", 100
  273. End With
  274. Set m_cLvwRssz = gLEInfo.CreateLCmnCtrl(cmCtrl_ListView)
  275. With m_cLvwRssz
  276.     .Create Me.hwnd, LVS_REPORT Or LVS_NOCOLUMNHEADER Or LVS_SHOWSELALWAYS Or LVS_SINGLESEL, 0, 0, 0, Me.ScaleWidth, 100
  277.     .SetImgList LVSIL_SMALL, 0, 16, 16, LoadResPicture(101, vbResBitmap).Handle, &HFF00FF
  278.     .AddColumn 0, "name", 100
  279. End With
  280. End Sub
  281. Private Sub IniTbr()
  282. Set m_cTbrMain = gLEInfo.CreateLCmnCtrl(cmCtrl_ToolBar)
  283. With m_cTbrMain
  284.     .CreateToolbar Me.hwnd, True, True, 16, 16, TBSTYLE_Default, TBSTYLE_EX_Default
  285.     .AddImages LoadResPicture(101, vbResBitmap).Handle, &HFF00FF
  286.     .AddButton m_TbrID_Option, "设置", , BTNS_AUTOSIZE Or BTNS_BUTTON Or BTNS_WHOLEDROPDOWN
  287.     .AddButton m_TbrID_Rss, "RSS", 2, BTNS_AUTOSIZE Or BTNS_BUTTON Or BTNS_WHOLEDROPDOWN
  288.     .SetMaxSize
  289.     .MoveToolbar 0, 0, Me.ScaleWidth, .GetToolbarHeight, False, False
  290. End With
  291. Call OpenGroup(1)
  292. End Sub
  293. Private Sub IniPopMnu()
  294. Call IniRssPMenu
  295. Call IniOptionPMenu
  296. End Sub
  297. '---------------------------------------------------------------------------------------
  298. ' Procedure : IniRssPMenu
  299. ' DateTime  : 2005-6-13 21:39
  300. ' Author    : Lingll
  301. ' Purpose   :
  302. '---------------------------------------------------------------------------------------
  303. Public Sub IniRssPMenu()
  304. Dim i&
  305. Set m_cPmnRssz = New cPopMenu
  306. m_cPmnRssz.Create
  307. m_cPmnRssz.Parent = Me.hwnd
  308. m_cPmnRssz.ClearItems
  309. If RssGCnt > 0 Then
  310.     For i = 1 To RssGCnt
  311.         m_cPmnRssz.Add RssGroups(i).Title, , i
  312.     Next i
  313. Else
  314.     m_cPmnRssz.Add "", pmsSeparator
  315. End If
  316. End Sub
  317. '---------------------------------------------------------------------------------------
  318. ' Procedure : IniOptionPMenu
  319. ' DateTime  : 2005-6-13 21:40
  320. ' Author    : Lingll
  321. ' Purpose   :
  322. '---------------------------------------------------------------------------------------
  323. Private Sub IniOptionPMenu()
  324. Dim tArr() As Byte
  325. Dim tHMnu&
  326. Set m_cPmnOption = New cPopMenu
  327. With m_cPmnOption
  328.     tArr = LoadResData(100, 4)
  329.     tHMnu = LoadMenuIndirect(VarPtr(tArr(0)))
  330.     .Create GetSubMenu(tHMnu, 0)
  331.     .Parent = Me.hwnd
  332. End With
  333. RemoveMenu tHMnu, 0, MF_BYPOSITION
  334. DestroyMenu tHMnu
  335. End Sub
  336. Private Sub m_cTbrMain_DropDown(id As Long, bLeft As Long, bTop As Long, bRight As Long, bBottom As Long)
  337. Dim tId&, i&
  338. Select Case id
  339.     Case m_TbrID_Rss
  340.         tId = m_cPmnRssz.Popup(False, bLeft, bBottom)
  341.         Call OpenGroup(tId)
  342.     Case m_TbrID_Option
  343.         tId = m_cPmnOption.Popup(False, bLeft, bBottom)
  344.         Select Case tId
  345.             Case 1
  346.                 Load frmAddRss
  347.                 frmAddRss.RssGroupIndex = m_RssGroupIndex
  348.                 frmAddRss.Show vbModal
  349.                 If Not frmAddRss.IsCancel Then
  350.                     Call AddRss(frmAddRss.RssGroupIndex, frmAddRss.RssTitle, frmAddRss.RssUrl)
  351.                     Call SaveGroup(frmAddRss.RssGroupIndex)
  352.                     If frmAddRss.RssGroupIndex = m_RssGroupIndex Then
  353.                         Call OpenGroup(m_RssGroupIndex)
  354.                     End If
  355.                 End If
  356.                 Unload frmAddRss
  357.                 Call IniRssPMenu
  358.             Case 2
  359.                 frmAddMulRss.Show vbModal
  360.                 If Not frmAddMulRss.IsCancel Then
  361.                     Call IniRssPMenu
  362.                 End If
  363.                 Unload frmAddMulRss
  364.         End Select
  365. End Select
  366. End Sub
  367. '---------------------------------------------------------------------------------------
  368. ' Procedure : OpenGroup
  369. ' DateTime  : 2005-6-13 12:04
  370. ' Author    : Lingll
  371. ' Purpose   :
  372. '---------------------------------------------------------------------------------------
  373. Private Sub OpenGroup(index&)
  374. Dim i&
  375. If index > 0 And index <= RssGCnt Then
  376.     m_cLvwLinks.ClearItem
  377.     m_cLvwRssz.ClearItem
  378.     For i = 1 To RssGroups(index).Count
  379.         m_cLvwRssz.AddItem RssGroups(index).Rssz(i).Title, , 1
  380.         
  381.     Next i
  382.     m_cLvwRssz.SetColumnWidth 0, -1
  383.     m_RssGroupIndex = index
  384.     
  385.     m_cTbrMain.SetButtonCaption m_TbrID_Rss, RssGroups(index).Title
  386. End If
  387. End Sub
  388. '---------------------------------------------------------------------------------------
  389. ' Procedure : AddRss
  390. ' DateTime  : 2005-6-13 12:30
  391. ' Author    : Lingll
  392. ' Purpose   :
  393. '---------------------------------------------------------------------------------------
  394. Private Sub AddRss(GroupIndex&, vTitle$, vUrl$)
  395. If GroupIndex > 0 And GroupIndex <= RssGCnt Then
  396.     With RssGroups(GroupIndex)
  397.         .Count = .Count + 1
  398.         ReDim Preserve .Rssz(0 To .Count)
  399.         .Rssz(.Count).Title = vTitle
  400.         .Rssz(.Count).Link = vUrl
  401.     End With
  402. End If
  403. End Sub