Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

archivos de ayuda (chm) con Visual Basic 6.0

Estas en el tema de archivos de ayuda (chm) con Visual Basic 6.0 en el foro de Visual Basic clásico en Foros del Web. Hola, mi problema es que necesito que en cada parte del programa o en cada formulario, se me abra una seccion u otra del archivo ...
  #1 (permalink)  
Antiguo 28/04/2010, 04:16
 
Fecha de Ingreso: abril-2010
Mensajes: 3
Antigüedad: 14 años
Puntos: 0
archivos de ayuda (chm) con Visual Basic 6.0

Hola, mi problema es que necesito que en cada parte del programa o en cada formulario, se me abra una seccion u otra del archivo de ayuda.
He generado el archivo de ayuda con HTML Help Workshop creé los alias y el map (.h) y definí cada parte del archivo de ayuda.

En VB en el formulario principal tengo esto :

App.HelpFile = App.Path & "\res\temporal\hhw_test.chm"

frmSituacionProy.HelpContextID = 1001

he puesto que en el formulario frmSituacionProy se me abra la ayuda que tengo definida cmo 1001 en el map y cuando ejecuto al pulsar F1 estando en el formulario frmSituacionProy me sale una ventana de error y me dice :

"HH_HELP_CONTEXT called without a [MAP] section"

nose donde esta el fallo. . .

y luego mas abajo en el formulario principal tengo:

Private Sub mnuAyuda_Click()
Shell "HH.EXE " & App.Path & "\res\temporal\hhw_test.chm", vbNormalFocus
End Sub

(esto si que me funciona , se me abre el archivo en general en el formulario principal)

Agradeceria mucho si alguien me puede ayudar, ya que llevo un tiempo largo con esto y no consigo que me salga. Gracias
  #2 (permalink)  
Antiguo 29/04/2010, 20:44
 
Fecha de Ingreso: enero-2010
Ubicación: SJM Lima - Peru
Mensajes: 55
Antigüedad: 14 años, 3 meses
Puntos: 1
Respuesta: archivos de ayuda (chm) con Visual Basic 6.0

Cita:
Iniciado por mrk1 Ver Mensaje
Hola, mi problema es que necesito que en cada parte del programa o en cada formulario, se me abra una seccion u otra del archivo de ayuda.
He generado el archivo de ayuda con HTML Help Workshop creé los alias y el map (.h) y definí cada parte del archivo de ayuda.

En VB en el formulario principal tengo esto :

App.HelpFile = App.Path & "\res\temporal\hhw_test.chm"

frmSituacionProy.HelpContextID = 1001

he puesto que en el formulario frmSituacionProy se me abra la ayuda que tengo definida cmo 1001 en el map y cuando ejecuto al pulsar F1 estando en el formulario frmSituacionProy me sale una ventana de error y me dice :

"HH_HELP_CONTEXT called without a [MAP] section"

nose donde esta el fallo. . .

y luego mas abajo en el formulario principal tengo:

Private Sub mnuAyuda_Click()
Shell "HH.EXE " & App.Path & "\res\temporal\hhw_test.chm", vbNormalFocus
End Sub

(esto si que me funciona , se me abre el archivo en general en el formulario principal)

Agradeceria mucho si alguien me puede ayudar, ya que llevo un tiempo largo con esto y no consigo que me salga. Gracias
Hola
te comparto este codigo que me sirvio bastante para implementar mi ayuda inteligente en cada uno de mis formularios y con su ayuda personal
lo unico saber bien las partes y archivos que forman parte de mi compilado CHM

Te voy a dividir el codigo crear un moduloX
iniciar mi variable y llamar al metodo Help
despues crear un modulo de clase llamado cHtmlHelp
y despues hacer todos los llamamientos posibles a las paginas q conforman el archivo CHM.

Código vb:
Ver original
  1. 1 en algun modulo publico
  2. Public m_HtmlHelp As cHtmlHelp
  3. Public Sub Help(frm As Form)
  4.         Dim sHelpFile As String
  5.         cHelpFile = App.Path & "\integral.chm"
  6.         sHelpFile = cHelpFile
  7.         App.HelpFile = sHelpFile
  8.         Set m_HtmlHelp = New cHtmlHelp
  9.         With m_HtmlHelp
  10.             .hwnd = frm.hwnd
  11.             .HelpFile = sHelpFile
  12.         End With
  13. End Sub
  14.  
  15. 2 en cualquier formulario, boton o menu
  16. Sub Ayuda()
  17.         Call Help(Me)
  18.         Call m_HtmlHelp.DisplayTopic("ventas.htm")
  19. End Sub
  20.  
  21. 3 creo mi modulo de clase cHtmlHelp
  22. Option Explicit
  23. #Const ES_DEBUG = 0
  24. Private Type HH_IDPAIR
  25.     dwControlId As Long
  26.     dwTopicId As Long
  27. End Type
  28. Private ids(0 To 1) As HH_IDPAIR
  29. Private Declare Function GetDlgCtrlID Lib "user32" (ByVal hwnd As Long) As Long
  30. Public hwnd As Long
  31. Public HelpFile As String
  32.  
  33. Private Enum HH_COMMAND
  34.     HH_Display_Topic = &H0
  35.     HH_HELP_FINDER = &H0
  36.     HH_DISPLAY_TOC = &H1
  37.     HH_DISPLAY_INDEX = &H2
  38.     HH_DISPLAY_SEARCH = &H3
  39.     HH_SET_WIN_TYPE = &H4
  40.     HH_GET_WIN_TYPE = &H5
  41.     HH_GET_WIN_HANDLE = &H6
  42.     HH_GET_INFO_TYPES = &H7
  43.     HH_SET_INFO_TYPES = &H8
  44.     HH_SYNC = &H9
  45.     HH_ADD_NAV_UI = &HA
  46.     HH_ADD_BUTTON = &HB
  47.     HH_GETBROWSER_APP = &HC
  48.     HH_KEYWORD_LOOKUP = &HD
  49.     HH_DISPLAY_TEXT_POPUP = &HE
  50.     HH_Help_Context = &HF
  51.     HH_TP_HELP_CONTEXTMENU
  52.     HH_TP_HELP_WM_HELP = &H11
  53.     HH_CLOSE_ALL = &H12
  54.     HH_ALINK_LOOKUP = &H13
  55. End Enum
  56.  
  57. Private Type RECT
  58.     Left    As Long
  59.     Top     As Long
  60.     Right   As Long
  61.     Bottom  As Long
  62. End Type
  63.  
  64. Private Type PointAPI
  65.     X   As Long
  66.     Y   As Long
  67. End Type
  68.    
  69. Private Type tagHH_POPUP
  70.     cbStruct        As Long
  71.     hinst           As Long
  72.     idString        As Long
  73.     pszText         As String
  74.     pt              As PointAPI
  75.     clrForeground   As Long
  76.     clrBackground   As Long
  77.     rcMargins       As RECT
  78.     pszFont         As String
  79.                                
  80. End Type
  81.  
  82. Private Type tagHH_FTS_QUERY
  83.     cbStruct        As Long
  84.     fUniCodeStrings As Long
  85.     pszSearchQuery  As String
  86.     iProximity      As Long
  87.     fStemmedSearch  As Long
  88.     fTitleOnly      As Long
  89.     fExecute        As Long
  90.     pszWindow       As String
  91. End Type
  92.  
  93. Private Declare Function HtmlHelp Lib "HHCtrl.ocx" Alias "HtmlHelpA" _
  94.     (ByVal hWndCaller As Long, ByVal pszFile As String, _
  95.     ByVal uCommand As HH_COMMAND, dwData As Any) As Long
  96.  
  97.  
  98. Public Function DisplayContext(Optional ByVal TopicNum As Long = 0&) As Long
  99.     Dim sHelpFile As String
  100.    
  101.     sHelpFile = SoloCHM
  102.     DisplayContext = HtmlHelp(hwnd, sHelpFile, HH_Help_Context, ByVal TopicNum)
  103.    
  104.     #If ES_DEBUG Then
  105.         Debug.Print "DisplayContext= " & DisplayContext
  106.     #End If
  107. End Function
  108.  
  109. Public Function DisplayTopic(Optional ByVal TopicName As String = "") As Long
  110.     Dim sHelpFile As String
  111.        
  112.     sHelpFile = SoloCHM
  113.     If Len(TopicName) = 0 Then
  114.         DisplayTopic = HtmlHelp(hwnd, sHelpFile, HH_Display_Topic, ByVal 0&)
  115.     Else
  116.         DisplayTopic = HtmlHelp(hwnd, sHelpFile, HH_Display_Topic, ByVal TopicName)
  117.     End If
  118.    
  119.     #If ES_DEBUG Then
  120.         Debug.Print "DisplayTopic= " & DisplayTopic
  121.     #End If
  122. End Function
  123.  
  124. Public Function PopUp(ByVal Text As String) As Long
  125.  
  126.     Dim HH_POPUP As tagHH_POPUP
  127.     Dim elForm As Form
  128.    
  129.     On Local Error Resume Next
  130.    
  131.     Set elForm = Screen.ActiveForm
  132.    
  133.     With HH_POPUP
  134.         .cbStruct = Len(HH_POPUP)
  135.         .clrBackground = -1
  136.         .clrForeground = -1
  137.         .pszFont = "Verdana,8"
  138.         .pszText = Text
  139.         .pt.X = (elForm.Left + 360) \ Screen.TwipsPerPixelX
  140.         .pt.Y = (elForm.Top + (elForm.Height \ 2) + 240) \ Screen.TwipsPerPixelY
  141.         .rcMargins.Bottom = -1
  142.         .rcMargins.Left = -1
  143.         .rcMargins.Right = -1
  144.         .rcMargins.Top = -1
  145.     End With
  146.     PopUp = HtmlHelp(hwnd, HelpFile, HH_DISPLAY_TEXT_POPUP, HH_POPUP)
  147.    
  148.     #If ES_DEBUG Then
  149.         Debug.Print "PopUp= " & PopUp
  150.     #End If
  151.    
  152.     Err = 0
  153. End Function
  154.  
  155. Public Function DisplaySearch() As Long
  156.     Dim sHelpFile As String
  157.     Dim HH_FTS_QUERY As tagHH_FTS_QUERY
  158.    
  159.     With HH_FTS_QUERY
  160.         .cbStruct = Len(HH_FTS_QUERY)
  161.         .fStemmedSearch = 0&
  162.         .fTitleOnly = 0&
  163.         .fUniCodeStrings = 0&
  164.         .iProximity = 0&
  165.         .pszSearchQuery = ""
  166.         .pszWindow = ""
  167.         .fExecute = 1&
  168.     End With
  169.    
  170.     sHelpFile = SoloCHM
  171.     DisplaySearch = HtmlHelp(hwnd, sHelpFile, HH_DISPLAY_SEARCH, HH_FTS_QUERY)
  172.    
  173.     #If ES_DEBUG Then
  174.         Debug.Print "DisplaySearch= " & DisplaySearch
  175.     #End If
  176. End Function
  177.  
  178. Public Function DisplayTOC() As Long
  179.     'Muestra la tabla de contenidos (TOC)
  180.    Dim sHelpFile As String
  181.    
  182.     sHelpFile = SoloCHM
  183.     DisplayTOC = HtmlHelp(hwnd, sHelpFile, HH_DISPLAY_TOC, ByVal 0&)
  184.    
  185.     #If ES_DEBUG Then
  186.         Debug.Print "DiplayToc= " & DisplayTOC
  187.     #End If
  188. End Function
  189.  
  190. Public Function DisplayIndex(Optional ByVal sKeyWord As String = "") As Long
  191.     Dim sHelpFile As String
  192.    
  193.     sHelpFile = SoloCHM
  194.     If Len(sKeyWord) = 0 Then
  195.         DisplayIndex = HtmlHelp(hwnd, sHelpFile, HH_DISPLAY_INDEX, ByVal 0&)
  196.     Else
  197.         DisplayIndex = HtmlHelp(hwnd, sHelpFile, HH_DISPLAY_INDEX, ByVal sKeyWord)
  198.     End If
  199.    
  200.     #If ES_DEBUG Then
  201.         Debug.Print "DisplayIndex= " & DisplayIndex
  202.     #End If
  203. End Function
  204.  
  205. Private Function SoloCHM() As String
  206.    
  207.     Dim i As Long
  208.     Dim sHelpFile As String
  209.    
  210.     sHelpFile = HelpFile
  211.     i = InStr(sHelpFile, "::/")
  212.     If i Then
  213.         sHelpFile = Trim$(Left$(sHelpFile, i - 1))
  214.     End If
  215.     SoloCHM = sHelpFile
  216. End Function
  217.  
  218. Public Function HelpContextPop(Optional ByVal elControl As Control) As Long
  219.     Dim vControl As Control
  220.    
  221.     On Local Error Resume Next
  222.    
  223.     If elControl Is Nothing Then
  224.         Set vControl = Screen.ActiveControl
  225.     Else
  226.         Set vControl = elControl
  227.     End If
  228.    
  229.     ids(0).dwTopicId = CLng(vControl.HelpContextID)
  230.     ids(0).dwControlId = GetDlgCtrlID(vControl.hwnd)
  231.     ids(1).dwControlId = 0
  232.     ids(1).dwTopicId = 0
  233.    
  234.     If Err = 0 Then
  235.         HelpContextPop = HtmlHelp(vControl.hwnd, HelpFile, HH_TP_HELP_WM_HELP, ids(0))
  236.     End If
  237.    
  238.     Err = 0
  239. End Function
  240. Public Function HelpContext(Optional ByVal elControl As Control, _
  241.                             Optional ByVal laVentana As String = "") As Long
  242.     Dim vControl As Control
  243.     Dim TopicNum As Long
  244.     Dim sHelpFile As String
  245.    
  246.     On Local Error Resume Next
  247.    
  248.     If elControl Is Nothing Then
  249.         Set vControl = Screen.ActiveControl
  250.     Else
  251.         Set vControl = elControl
  252.     End If
  253.    
  254.     TopicNum = CLng(vControl.HelpContextID)
  255.    
  256.     If Err = 0 Then
  257.         sHelpFile = SoloCHM
  258.         If Len(laVentana) Then
  259.             sHelpFile = sHelpFile & " >" & laVentana
  260.         End If
  261.         HelpContext = HtmlHelp(hwnd, sHelpFile, HH_Help_Context, ByVal TopicNum)
  262.     End If
  263.    
  264.     Err = 0
  265. End Function

Última edición por David; 29/04/2010 a las 21:22 Razón: Remover firma

Etiquetas: basic, visual
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:51.