VBGood网站全文搜索 Google

搜索VBGood全站网页(全文搜索)

VB爱好者乐园(VBGood)

 找回密码
 立即注册
搜索
楼主: icecept

HtmlHelp帮助制作及调用精解示例

[复制链接]
头像被屏蔽
发表于 2007-12-28 21:19:06 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-12-29 13:18:47 | 显示全部楼层

回复 #21 freebuy 的帖子

正在编写中,写出来发上来和大家分享
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-12-30 10:37:10 | 显示全部楼层
经过两天的调试,终于可以完成大家的要求了,祝大家新年快乐,健康喜乐 
请看截图



图片附件: 文件.JPG (2007-12-30 10:19, 11.62 K)



图片附件: 粘贴.JPG (2007-12-30 10:19, 11.5 K)



图片附件: 查看.JPG (2007-12-30 10:19, 11.73 K)

回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-12-30 10:38:25 | 显示全部楼层
在状态栏动态显示菜单提示最终版

在form1中:
'**************************************************************************
'**模 块 名:工程1 - 在状态栏动态显示菜单提示
'**说    明:魔灵圣域 版权所有2007 - 2008(C)
'**创 建 人:郭卫(魔灵)
'**日    期:2007-12-30 02:45:44
'**修 改 人:郭卫
'**日    期:
'**描    述:郭卫制作
'**版    本:V1.0.0    http://icecept.blog.sohu.com
'*************************************************************************
Option Explicit
Private Sub Form_Load()
    Dim ret As Long
    hMenu = GetMenu(Me.hwnd)
    StatusBar1.Panels(1).Text = "在状态栏动态显示菜单提示"
    '记录原本的Window Procedure的位址
    preWinProc = GetWindowLong(Me.hwnd, GWL_WNDPROC)
'    设定Combo1的window Procedure到wndproc
    ret = SetWindowLong(Me.hwnd, GWL_WNDPROC, AddressOf wndproc)
End Sub
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
     StatusBar1.Panels(1).Text = "在状态栏动态显示菜单提示"
End Sub
Private Sub Form_Unload(Cancel As Integer)
    Dim ret As Long
    '取消Message的截取,而使之又只送往原来的Window Procedure
    ret = SetWindowLong(Me.hwnd, GWL_WNDPROC, preWinProc)
End Sub

在模块中:
Option Explicit
Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" _
        (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" _
        (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" _
        (ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, ByVal Msg As Long, _
        ByVal wParam As Long, ByVal lParam As Long) As Long
Declare Function GetMenuString Lib "user32" Alias "GetMenuStringA" (ByVal hMenu As Long, ByVal wIDItem As Long, ByVal lpString As String, ByVal nMaxCount As Long, ByVal wFlag As Long) As Long
Declare Function GetMenu Lib "user32" (ByVal hwnd As Long) As Long
Declare Function GetSubMenu Lib "user32" (ByVal hMenu As Long, ByVal nPos As Long) As Long
Public Const GWL_WNDPROC = (-4)
Public Const WM_MENUSELECT = &H11F
Public Const MF_BYCOMMAND = &H0&
Public Const MF_BYPOS99vION = &H400&
Public hMenu As Long
Public preWinProc As Long
Private Type tLong
    ll As Long
End Type
Private Type TwoWord
    LowWord As Integer
    HiWord As Integer
End Type
Public Function wndproc(ByVal hwnd As Long, ByVal Msg As Long, _
                        ByVal wParam As Long, ByVal lParam As Long) As Long
    Dim MenuItemStr As String, SubMenuStr As String
    Dim hSubmenu As Long, MenuId As Long, i As Long
    Dim tmpl As tLong, tmpt As TwoWord
    '以下程式会截取WM_MENUSELECT处理完後,再将之送往原来的Window Procedure
    If Msg = WM_MENUSELECT Then
        SubMenuStr = String(255, 0)
        MenuItemStr = String(255, 0)
        tmpl.ll = wParam
        LSet tmpt = tmpl
        MenuId = tmpt.LowWord
        hSubmenu = GetSubMenu(lParam, MenuId)
        If hSubmenu = 0 And MenuId <> 0 Then '表示该item之下没有popupMenu了
'            以下语句显示原菜单提示
'            Call GetMenuString(lParam, MenuId, MenuItemStr, 256, MF_BYCOMMAND)
'            MenuItemStr = Left(MenuItemStr, InStr(1, MenuItemStr, Chr(0)) - 1)
'            Form1.StatusBar1.Panels(1).Text = MenuItemStr
'            以下语句显示自定义菜单提示
             Form1.StatusBar1.Panels(1).Text = LoadResString(MenuId)
        Else
            Form1.StatusBar1.Panels(1).Text = "在状态栏动态显示菜单提示"
        End If
    End If
    '将之送往原来的Window Procedure
    wndproc = CallWindowProc(preWinProc, hwnd, Msg, wParam, lParam)
End Function



附件: 在状态栏动态显示菜单提示.rar
回复 支持 反对

使用道具 举报

发表于 2007-12-31 20:02:08 | 显示全部楼层
不错啊  学习了
回复 支持 反对

使用道具 举报

发表于 2009-4-25 21:07:35 | 显示全部楼层
谢谢。。学习了
回复 支持 反对

使用道具 举报

发表于 2009-5-10 00:03:23 | 显示全部楼层
原帖由 icecept 于 2007-11-3 13:23 发表
网上资料加自己所用心得做出的HTML WorkShop Help 学习系统,希望对大家有所帮助地。



为什么我做好后 生成 CHM后
在另外的机器上打开
就和下载这个 HELP一样,点击左侧目录,右边都是显示:找不到指定页呢?

在做的机器上打开就正常!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-5-10 09:15:39 | 显示全部楼层

回复 #27 hifrank 的帖子

你要把你搜集的资料和chm工程文件放在一个文件夹内,不然的话就出现你所说的情况了。
回复 支持 反对

使用道具 举报

发表于 2009-5-11 15:51:59 | 显示全部楼层
原帖由 icecept 于 2009-5-10 09:15 发表
你要把你搜集的资料和chm工程文件放在一个文件夹内,不然的话就出现你所说的情况了。


谢谢回复!

我看那个CHM文件也很大嘛,2.5M之多

如果还要把做HTML的资源文件和这个chm文件放在一个文件夹内
而不是
一个独立的CHM文件使用

那做出来的这个帮助文件,貌似不是很有意义了?

能打成一个独立的CHM格式的包不?
回复 支持 反对

使用道具 举报

发表于 2009-5-20 08:49:58 | 显示全部楼层


http://www.yiito.com/blog/article.asp?id=32
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

文字版|手机版|小黑屋|VBGood  

GMT+8, 2019-7-23 19:01

VB爱好者乐园(VBGood)
快速回复 返回顶部 返回列表