- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Has anyone got a simple solution for this:
I have been using the RealWin interface to call windows commands, including accessing my application helpfile using commands such as:
I have been using the RealWin interface to call windows commands, including accessing my application helpfile using commands such as:
lresult = start_win_help(window, file_name=TRIM(HELPNAME), command=HELP_FORCEFILE, id=IDH_URCONTENTS)
I have now migrated my help file from .hlp to .chm format, and would like to know if there is a simple method of opening these from within my program. I am already using some of the XEffort routines within my program.
Thanks,
David
Link Copied
5 Replies
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Have you tried ShellExecute to "open" one of these? You wouldn't be able to specify a topic, though.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I am using something like:
[fortran]module HTMLHELPM !/**************************************************************************** !* * !* HtmlHelp.h * !* * !* Copyright (c) 1996-1997, Microsoft Corp. All rights reserved. * !* * !* Translated to Fortran Dec 11. 2001. by Jugoslav Dujic. * !* Compiled but untested. * !****************************************************************************/ use dfwinty !, only: T_NMHDR, T_POINT, T_RECT ! Commands to pass to HtmlHelp() integer, parameter:: HH_DISPLAY_TOPIC = #0000 integer, parameter:: HH_HELP_FINDER = #0000 ! WinHelp equivalent integer, parameter:: HH_DISPLAY_TOC = #0001 ! not currently implemented integer, parameter:: HH_DISPLAY_INDEX = #0002 ! not currently implemented integer, parameter:: HH_DISPLAY_SEARCH = #0003 ! not currently implemented integer, parameter:: HH_SET_WIN_TYPE = #0004 integer, parameter:: HH_GET_WIN_TYPE = #0005 integer, parameter:: HH_GET_WIN_HANDLE = #0006 integer, parameter:: HH_ENUM_INFO_TYPE = #0007 ! Get Info type name, call repeatedly to enumerate, -1 at end integer, parameter:: HH_SET_INFO_TYPE = #0008 ! Add Info type to filter. integer, parameter:: HH_SYNC = #0009 integer, parameter:: HH_ADD_NAV_UI = #000A ! not currently implemented integer, parameter:: HH_ADD_BUTTON = #000B ! not currently implemented integer, parameter:: HH_GETBROWSER_APP = #000C ! not currently implemented integer, parameter:: HH_KEYWORD_LOOKUP = #000D integer, parameter:: HH_DISPLAY_TEXT_POPUP = #000E ! display string resource id or text in a popup window integer, parameter:: HH_HELP_CONTEXT = #000F ! display mapped numeric value in dwData integer, parameter:: HH_TP_HELP_CONTEXTMENU = #0010 ! text popup help, same as WinHelp HELP_CONTEXTMENU integer, parameter:: HH_TP_HELP_WM_HELP = #0011 ! text popup help, same as WinHelp HELP_WM_HELP integer, parameter:: HH_CLOSE_ALL = #0012 ! close all windows opened directly or indirectly by the caller integer, parameter:: HH_ALINK_LOOKUP = #0013 ! ALink version of HH_KEYWORD_LOOKUP integer, parameter:: HH_GET_LAST_ERROR = #0014 ! not currently implemented ! See HHERROR.h integer, parameter:: HH_ENUM_CATEGORY = #0015 ! Get category name, call repeatedly to enumerate, -1 at end integer, parameter:: HH_ENUM_CATEGORY_IT = #0016 ! Get category info type members, call repeatedly to enumerate, -1 at end integer, parameter:: HH_RESET_IT_FILTER = #0017 ! Clear the info type filter of all info types. integer, parameter:: HH_SET_INCLUSIVE_FILTER = #0018 ! set inclusive filtering method for untyped topics to be included in display integer, parameter:: HH_SET_EXCLUSIVE_FILTER = #0019 ! set exclusive filtering method for untyped topics to be excluded from display integer, parameter:: HH_SET_GUID = #001A ! For Microsoft Installer -- dwData is a pointeger(4)er to the GUID string integer, parameter:: HH_INTERNAL = #00FF ! Used internally. integer, parameter:: HHWIN_PROP_ONTOP = #00002 ! Top-most window (not currently implemented) integer, parameter:: HHWIN_PROP_NOTITLEBAR = #00004 ! no title bar integer, parameter:: HHWIN_PROP_NODEF_STYLES = #00008 ! no default window styles (only HH_Winteger(4)YPE.dwStyles) integer, parameter:: HHWIN_PROP_NODEF_EXSTYLES = #00010 ! no default extended window styles (only HH_Winteger(4)YPE.dwExStyles) integer, parameter:: HHWIN_PROP_TRI_PANE = #00020 ! use a tri-pane window integer, parameter:: HHWIN_PROP_NOTB_TEXT = #00040 ! no text on toolbar buttons integer, parameter:: HHWIN_PROP_POST_QUIT = #00080 ! post WM_QUIT message when window closes integer, parameter:: HHWIN_PROP_AUTO_SYNC = #00100 ! automatically ssync contents and index integer, parameter:: HHWIN_PROP_TRACKING = #00200 ! send tracking notification messages integer, parameter:: HHWIN_PROP_TAB_SEARCH = #00400 ! include search tab in navigation pane integer, parameter:: HHWIN_PROP_TAB_HISTORY = #00800 ! include history tab in navigation pane integer, parameter:: HHWIN_PROP_TAB_BOOKMARKS = #01000 ! include bookmark tab in navigation pane integer, parameter:: HHWIN_PROP_CHANGE_TITLE = #02000 ! Put current HTML title in title bar integer, parameter:: HHWIN_PROP_NAV_ONLY_WIN = #04000 ! Only display the navigation window integer, parameter:: HHWIN_PROP_NO_TOOLBAR = #08000 ! Don't display a toolbar integer, parameter:: HHWIN_PROP_MENU = #10000 ! Menu integer, parameter:: HHWIN_PROP_TAB_ADVSEARCH = #20000 ! Advanced FTS UI. integer, parameter:: HHWIN_PROP_USER_POS = #40000 ! After initial creation, user controls window size/position integer, parameter:: HHWIN_PARAM_PROPERTIES = #00002 ! valid fsWinProperties integer, parameter:: HHWIN_PARAM_STYLES = #00004 ! valid dwStyles integer, parameter:: HHWIN_PARAM_EXSTYLES = #00008 ! valid dwExStyles integer, parameter:: HHWIN_PARAM_RECT = #00010 ! valid rcWindowPos integer, parameter:: HHWIN_PARAM_NAV_WIDTH = #00020 ! valid iNavWidth integer, parameter:: HHWIN_PARAM_SHOWSTATE = #00040 ! valid nShowState integer, parameter:: HHWIN_PARAM_INFOTYPES = #00080 ! valid apInfoTypes integer, parameter:: HHWIN_PARAM_TB_FLAGS = #00100 ! valid fsToolBarFlags integer, parameter:: HHWIN_PARAM_EXPANSION = #00200 ! valid fNotExpanded integer, parameter:: HHWIN_PARAM_TABPOS = #00400 ! valid tabpos integer, parameter:: HHWIN_PARAM_TABORDER = #00800 ! valid taborder integer, parameter:: HHWIN_PARAM_HISTORY_COUNT = #01000 ! valid cHistory integer, parameter:: HHWIN_PARAM_CUR_TAB = #02000 ! valid curNavType integer, parameter:: HHWIN_BUTTON_EXPAND = #000002 ! Expand/contract button integer, parameter:: HHWIN_BUTTON_BACK = #000004 ! Back button integer, parameter:: HHWIN_BUTTON_FORWARD = #000008 ! Forward button integer, parameter:: HHWIN_BUTTON_STOP = #000010 ! Stop button integer, parameter:: HHWIN_BUTTON_REFRESH = #000020 ! Refresh button integer, parameter:: HHWIN_BUTTON_HOME = #000040 ! Home button integer, parameter:: HHWIN_BUTTON_BROWSE_FWD = #000080 ! not implemented integer, parameter:: HHWIN_BUTTON_BROWSE_BCK = #000100 ! not implemented integer, parameter:: HHWIN_BUTTON_NOTES = #000200 ! not implemented integer, parameter:: HHWIN_BUTTON_CONTENTS = #000400 ! not implemented integer, parameter:: HHWIN_BUTTON_SYNC = #000800 ! Sync button integer, parameter:: HHWIN_BUTTON_OPTIONS = #001000 ! Options button integer, parameter:: HHWIN_BUTTON_PRINT = #002000 ! Print button integer, parameter:: HHWIN_BUTTON_INDEX = #004000 ! not implemented integer, parameter:: HHWIN_BUTTON_SEARCH = #008000 ! not implemented integer, parameter:: HHWIN_BUTTON_HISTORY = #010000 ! not implemented integer, parameter:: HHWIN_BUTTON_BOOKMARKS = #020000 ! not implemented integer, parameter:: HHWIN_BUTTON_JUMP1 = #040000 integer, parameter:: HHWIN_BUTTON_JUMP2 = #080000 integer, parameter:: HHWIN_BUTTON_ZOOM = #100000 integer, parameter:: HHWIN_BUTTON_TOC_NEXT = #200000 integer, parameter:: HHWIN_BUTTON_TOC_PREV = #400000 integer, parameter:: HHWIN_DEF_BUTTONS = & HHWIN_BUTTON_EXPAND .OR. & HHWIN_BUTTON_BACK .OR. & HHWIN_BUTTON_OPTIONS .OR. & HHWIN_BUTTON_PRINT ! Button IDs integer, parameter:: IDTB_EXPAND = 200 integer, parameter:: IDTB_CONTRACT = 201 integer, parameter:: IDTB_STOP = 202 integer, parameter:: IDTB_REFRESH = 203 integer, parameter:: IDTB_BACK = 204 integer, parameter:: IDTB_HOME = 205 integer, parameter:: IDTB_SYNC = 206 integer, parameter:: IDTB_PRINT = 207 integer, parameter:: IDTB_OPTIONS = 208 integer, parameter:: IDTB_FORWARD = 209 integer, parameter:: IDTB_NOTES = 210 ! not implemented integer, parameter:: IDTB_BROWSE_FWD = 211 integer, parameter:: IDTB_BROWSE_BACK = 212 integer, parameter:: IDTB_CONTENTS = 213 ! not implemented integer, parameter:: IDTB_INDEX = 214 ! not implemented integer, parameter:: IDTB_SEARCH = 215 ! not implemented integer, parameter:: IDTB_HISTORY = 216 ! not implemented integer, parameter:: IDTB_BOOKMARKS = 217 ! not implemented integer, parameter:: IDTB_JUMP1 = 218 integer, parameter:: IDTB_JUMP2 = 219 integer, parameter:: IDTB_CUSTOMIZE = 221 integer, parameter:: IDTB_ZOOM = 222 integer, parameter:: IDTB_TOC_NEXT = 223 integer, parameter:: IDTB_TOC_PREV = 224 ! Notification codes integer, parameter:: HHN_FIRST = -860 integer, parameter:: HHN_LAST = -879 integer, parameter:: HHN_NAVCOMPLETE =(HHN_FIRST-0) integer, parameter:: HHN_TRACK =(HHN_FIRST-1) integer, parameter:: HHN_WINDOW_CREATE =(HHN_FIRST-2) type T_HHN_NOTIFY type(T_NMHDR) hdr integer pszUrl ! Multi-integer(1), null-terminated string end type T_HHN_NOTIFY type T_HH_POPUP integer(4) cbStruct ! sizeof this structure integer(4) hinst ! instance handle for string resource integer(4) idString ! string resource id, or text id if pszFile is specified in HtmlHelp call integer(4) pszText ! used if idString is zero type(T_POINT) pt ! top center of popup window integer(4) clrForeground ! use -1 for default integer(4) clrBackground ! use -1 for default type(T_RECT) rcMargins ! amount of space between edges of window and text, -1 for each member to ignore integer(4) pszFont ! facename, pointeger(4) size, char set, BOLD ITALIC UNDERLINE end type T_HH_POPUP type T_HH_AKLINK integer(4) cbStruct ! sizeof this structure logical fReserved ! must be FALSE (really!) integer(4) pszKeywords ! semi-colon separated keywords integer(4) pszUrl ! URL to jump to if no keywords found (may be NULL) integer(4) pszMsgText ! Message text to display in MessageBox if pszUrl is NULL and no keyword match integer(4) pszMsgTitle ! Message text to display in MessageBox if pszUrl is NULL and no keyword match integer(4) pszWindow ! Window to display URL in logical fIndexOnFail ! Displays index if keyword lookup fails. end type T_HH_AKLINK integer, parameter:: HHWIN_NAVTYPE_TOC = #0000 integer, parameter:: HHWIN_NAVTYPE_INDEX = #0001 integer, parameter:: HHWIN_NAVTYPE_SEARCH = #0002 integer, parameter:: HHWIN_NAVTYPE_BOOKMARKS = #0003 integer, parameter:: HHWIN_NAVTYPE_HISTORY = #0004 ! not implemented integer, parameter:: IT_INCLUSIVE = #0000 integer, parameter:: IT_EXCLUSIVE = #0001 integer, parameter:: IT_HIDDEN = #0002 type T_HH_ENUM_IT integer(4) cbStruct ! size of this structure integer(4) iType ! the type of the information type ie. Inclusive, Exclusive, or Hidden integer(4) pszCatName ! Set to the name of the Category to enumerate the info types in a category else NULL integer(4) pszITName ! volitile pointeger(4)er to the name of the infotype. Allocated by call. Caller responsible for freeing integer(4) pszITDescription ! volitile pointeger(4)er to the description of the infotype. end type T_HH_ENUM_IT type T_HH_ENUM_CAT integer(4) cbStruct ! size of this structure integer(4) pszCatName ! volitile pointeger(4)er to the category name integer(4) pszCatDescription ! volitile pointeger(4)er to the category description end type T_HH_ENUM_CAT type T_HH_SET_INFOTYPE integer(4) cbStruct ! the size of this structure integer(4) pszCatName ! the name of the category, if any, the InfoType is a member of. integer(4) pszInfoTypeName ! the name of the info type to add to the filter end type T_HH_SET_INFOTYPE integer, parameter:: HHWIN_NAVTAB_TOP = #0000 integer, parameter:: HHWIN_NAVTAB_LEFT = #0001 integer, parameter:: HHWIN_NAVTAB_BOTTOM = #0002 integer, parameter:: HH_MAX_TABS =19 ! maximum number of tabs integer, parameter:: HH_TAB_CONTENTS = #0000 integer, parameter:: HH_TAB_INDEX = #0001 integer, parameter:: HH_TAB_SEARCH = #0002 integer, parameter:: HH_TAB_BOOKMARKS = #0003 integer, parameter:: HH_TAB_HISTORY = #0004 ! HH_DISPLAY_SEARCH Command Related Structures and Constants integer, parameter:: HH_FTS_DEFAULT_PROXIMITY = (-1) type T_HH_FTS_QUERY integer(4) cbStruct ! Sizeof structure in integer(1)s. logical fUniCodeStrings ! TRUE if all strings are unicode. integer(4) pszSearchQuery ! String containing the search query. integer(LONG) iProximity ! Word proximity. logical fStemmedSearch ! TRUE for StemmedSearch only. logical fTitleOnly ! TRUE for Title search only. logical fExecute ! TRUE to initiate the search. integer(HANDLE) pszWindow ! Window to display in end type T_HH_FTS_QUERY ! HH_WINTYPE Structure type T_HH_WINTYPE integer(4) cbStruct ! IN: size of this structure including all Information Types logical fUniCodeStrings ! IN/OUT: TRUE if all strings are in UNICODE integer(4) pszType ! IN/OUT: Name of a type of window integer(4) fsValidMembers ! IN: Bit flag of valid members (HHWIN_PARAM_) integer(4) fsWinProperties ! IN/OUT: Properties/attributes of the window (HHWIN_) integer(4) pszCaption ! IN/OUT: Window title integer(4) dwStyles ! IN/OUT: Window styles integer(4) dwExStyles ! IN/OUT: Extended Window styles type(T_RECT) rcWindowPos ! IN: Starting position, OUT: current position integer(4) nShowState ! IN: show state (e.g., SW_SHOW) integer(4) hwndHelp ! OUT: window handle integer(4) hwndCaller ! OUT: who called this window integer(4) paInfoTypes ! IN: Pointer to an array of Information Types ! The following members are only valid if HHWIN_PROP_TRI_PANE is set integer(4) hwndToolBar ! OUT: toolbar window in tri-pane window integer(4) hwndNavigation ! OUT: navigation window in tri-pane window integer(4) hwndHTML ! OUT: window displaying HTML in tri-pane window integer(4) iNavWidth ! IN/OUT: width of navigation window type(T_RECT) rcHTML ! OUT: HTML window coordinates integer(4) pszToc ! IN: Location of the table of contents file integer(4) pszIndex ! IN: Location of the index file integer(4) pszFile ! IN: Default location of the html file integer(4) pszHome ! IN/OUT: html file to display when Home button is clicked integer(4) fsToolBarFlags ! IN: flags controling the appearance of the toolbar logical fNotExpanded ! IN: TRUE/FALSE to contract or expand, OUT: current state integer(4) curNavType ! IN/OUT: UI to display in the navigational pane integer(4) tabpos ! IN/OUT: HHWIN_NAVTAB_TOP, HHWIN_NAVTAB_LEFT, or HHWIN_NAVTAB_BOTTOM integer(4) idNotify ! IN: ID to use for WM_NOTIFY messages integer(1) tabOrder(HH_MAX_TABS + 1) ! IN/OUT: tab order: Contents, Index, Search, History, Favorites, Reserved 1-5, Custom tabs integer(4) cHistory ! IN/OUT: number of history items to keep (default is 30) integer(4) pszJump1 ! Text for HHWIN_BUTTON_JUMP1 integer(4) pszJump2 ! Text for HHWIN_BUTTON_JUMP2 integer(4) pszUrlJump1 ! URL for HHWIN_BUTTON_JUMP1 integer(4) pszUrlJump2 ! URL for HHWIN_BUTTON_JUMP2 type(T_RECT) rcMinSize ! Minimum size for window (ignored in version 1) integer(4) cbInfoTypes ! size of paInfoTypes end type T_HH_WINTYPE integer, parameter:: HHACT_TAB_CONTENTS = #0000 integer, parameter:: HHACT_TAB_INDEX = #0001 integer, parameter:: HHACT_TAB_SEARCH = #0002 integer, parameter:: HHACT_TAB_HISTORY = #0003 integer, parameter:: HHACT_TAB_FAVORITES = #0004 integer, parameter:: HHACT_EXPAND = #0005 integer, parameter:: HHACT_CONTRACT = #0006 integer, parameter:: HHACT_BACK = #0007 integer, parameter:: HHACT_FORWARD = #0008 integer, parameter:: HHACT_STOP = #0009 integer, parameter:: HHACT_REFRESH = #000A integer, parameter:: HHACT_HOME = #000B integer, parameter:: HHACT_SYNC = #000C integer, parameter:: HHACT_OPTIONS = #000D integer, parameter:: HHACT_PRINT = #000E integer, parameter:: HHACT_HIGHLIGHT = #000F integer, parameter:: HHACT_CUSTOMIZE = #0010 integer, parameter:: HHACT_JUMP1 = #0011 integer, parameter:: HHACT_JUMP2 = #0012 integer, parameter:: HHACT_ZOOM = #0013 integer, parameter:: HHACT_TOC_NEXT = #0014 integer, parameter:: HHACT_TOC_PREV = #0015 integer, parameter:: HHACT_NOTES = #0016 integer, parameter:: HHACT_LAST_ENUM = #0017 type T_HHNTRACK type(T_NMHDR):: hdr integer(4) pszCurUrl ! Multi-integer(1), null-terminated string integer(4) idAction ! HHACT_ value integer(4) phhWintype ! Current window type structure end type T_HHNTRACK interface integer(HANDLE) function HtmlHelp(hwndCaller, pszFile, uCommand, dwData) !DEC$ATTRIBUTES STDCALL, ALIAS: "_HtmlHelpA@16":: HtmlHelp use ifwinty integer(HANDLE) hwndCaller !DEC$ATTRIBUTES REFERENCE:: pszFile character(*) pszFile integer(UINT) uCommand integer(HANDLE) dwData end function HtmlHelp end interface ! Use the following for GetProcAddress to load from hhctrl.ocx integer, parameter:: ATOM_HTMLHELP_API_ANSI =14 integer, parameter:: ATOM_HTMLHELP_API_UNICODE =15 END MODULE HTMLHELPM module Hlp !**************************************** ! routines driving help ! ! ! chacater constants used to point to chm file character*14, parameter :: $EOD="ch01.html#EOD"C character*30, parameter :: $EOD_Installation="ch01s02.html#EOD-Installation"C character*38, parameter :: $EOD_Installation_Modules="ch01s02.html#EOD-Installation.Modules"C character*22, parameter :: $ELENSmod="ch01s02.html#ELENSmod"C character*32, parameter :: $Module_EPERMRZSPCH="ch01s02.html#Module.EPERMRZSPCH"C character*41, parameter :: $EOD_Installation_Plugins="ch01s02s02.html#EOD-Installation.Plugins"C character*29, parameter :: $EOD_CommandLine="ch01s03.html#EOD-CommandLine"C character*37, parameter :: $EOD_CommandLine_Project="ch01s03.html#EOD-CommandLine-Project"C ! integer, parameter :: WM_HELP = #0053 integer, parameter :: CONTEXTHELP = 4 contains recursive subroutine AppHelp(iType,Topic) use user32 use kernel32 use htmlhelpm !-------- start of interfaces --------------- use EODInterfaces !--------- end of interfaces ---------------- implicit none ! do not assume implicit types character*256 HelpFileName,CommandLine,FileName pointer (pCommandLine,CommandLine) character*(*) Topic type (T_HH_FTS_QUERY) HHQ integer*4 ITYPE integer*4 ICOMMAND integer*4 IRET integer*4 I HelpFileName="C:EODEOD.chm"//""C select case (iType) case (1) ! show help contents iCommand=HH_DISPLAY_TOC iret=HtmlHelp(0,& HelpFileName,& iCommand,& 0) case (2) ! show search HHQ.cbStruct=SizeOf(HHQ) HHQ.fUniCodeStrings=.FALSE. ! TRUE if all strings are unicode. HHQ.pszSearchQuery=LOC("ss"C) ! String containing the search query. HHQ.iProximity=HH_FTS_DEFAULT_PROXIMITY ! Word proximity. HHQ.fStemmedSearch=.FALSE. ! TRUE for StemmedSearch only. HHQ.fTitleOnly=.FALSE. ! TRUE for Title search only. HHQ.fExecute=.FALSE. ! TRUE to initiate the search. HHQ.pszWindow=NULL ! Window to display in iCommand=HH_DISPLAY_SEARCH iret=HtmlHelp(0,& HelpFileName,& iCommand,& LOC(HHQ)) case (3) ! index iCommand=HH_DISPLAY_INDEX iret=HtmlHelp(0,& HelpFileName,& iCommand,& 0) case (4) ! index iCommand=HH_DISPLAY_TOPIC iret=HtmlHelp(0,& HelpFileName,& iCommand,& LOC(Topic)) case default iCommand=HH_DISPLAY_TOC end select return end subroutine end module program call help use hlp call AppHelp(CONTEXTHELP,$EOD_Installation_Plugins) ! open help file on EOD plugins end program [/fortran] It is important to link application against "htmlhelp.lib" library.
[fortran]module HTMLHELPM !/**************************************************************************** !* * !* HtmlHelp.h * !* * !* Copyright (c) 1996-1997, Microsoft Corp. All rights reserved. * !* * !* Translated to Fortran Dec 11. 2001. by Jugoslav Dujic. * !* Compiled but untested. * !****************************************************************************/ use dfwinty !, only: T_NMHDR, T_POINT, T_RECT ! Commands to pass to HtmlHelp() integer, parameter:: HH_DISPLAY_TOPIC = #0000 integer, parameter:: HH_HELP_FINDER = #0000 ! WinHelp equivalent integer, parameter:: HH_DISPLAY_TOC = #0001 ! not currently implemented integer, parameter:: HH_DISPLAY_INDEX = #0002 ! not currently implemented integer, parameter:: HH_DISPLAY_SEARCH = #0003 ! not currently implemented integer, parameter:: HH_SET_WIN_TYPE = #0004 integer, parameter:: HH_GET_WIN_TYPE = #0005 integer, parameter:: HH_GET_WIN_HANDLE = #0006 integer, parameter:: HH_ENUM_INFO_TYPE = #0007 ! Get Info type name, call repeatedly to enumerate, -1 at end integer, parameter:: HH_SET_INFO_TYPE = #0008 ! Add Info type to filter. integer, parameter:: HH_SYNC = #0009 integer, parameter:: HH_ADD_NAV_UI = #000A ! not currently implemented integer, parameter:: HH_ADD_BUTTON = #000B ! not currently implemented integer, parameter:: HH_GETBROWSER_APP = #000C ! not currently implemented integer, parameter:: HH_KEYWORD_LOOKUP = #000D integer, parameter:: HH_DISPLAY_TEXT_POPUP = #000E ! display string resource id or text in a popup window integer, parameter:: HH_HELP_CONTEXT = #000F ! display mapped numeric value in dwData integer, parameter:: HH_TP_HELP_CONTEXTMENU = #0010 ! text popup help, same as WinHelp HELP_CONTEXTMENU integer, parameter:: HH_TP_HELP_WM_HELP = #0011 ! text popup help, same as WinHelp HELP_WM_HELP integer, parameter:: HH_CLOSE_ALL = #0012 ! close all windows opened directly or indirectly by the caller integer, parameter:: HH_ALINK_LOOKUP = #0013 ! ALink version of HH_KEYWORD_LOOKUP integer, parameter:: HH_GET_LAST_ERROR = #0014 ! not currently implemented ! See HHERROR.h integer, parameter:: HH_ENUM_CATEGORY = #0015 ! Get category name, call repeatedly to enumerate, -1 at end integer, parameter:: HH_ENUM_CATEGORY_IT = #0016 ! Get category info type members, call repeatedly to enumerate, -1 at end integer, parameter:: HH_RESET_IT_FILTER = #0017 ! Clear the info type filter of all info types. integer, parameter:: HH_SET_INCLUSIVE_FILTER = #0018 ! set inclusive filtering method for untyped topics to be included in display integer, parameter:: HH_SET_EXCLUSIVE_FILTER = #0019 ! set exclusive filtering method for untyped topics to be excluded from display integer, parameter:: HH_SET_GUID = #001A ! For Microsoft Installer -- dwData is a pointeger(4)er to the GUID string integer, parameter:: HH_INTERNAL = #00FF ! Used internally. integer, parameter:: HHWIN_PROP_ONTOP = #00002 ! Top-most window (not currently implemented) integer, parameter:: HHWIN_PROP_NOTITLEBAR = #00004 ! no title bar integer, parameter:: HHWIN_PROP_NODEF_STYLES = #00008 ! no default window styles (only HH_Winteger(4)YPE.dwStyles) integer, parameter:: HHWIN_PROP_NODEF_EXSTYLES = #00010 ! no default extended window styles (only HH_Winteger(4)YPE.dwExStyles) integer, parameter:: HHWIN_PROP_TRI_PANE = #00020 ! use a tri-pane window integer, parameter:: HHWIN_PROP_NOTB_TEXT = #00040 ! no text on toolbar buttons integer, parameter:: HHWIN_PROP_POST_QUIT = #00080 ! post WM_QUIT message when window closes integer, parameter:: HHWIN_PROP_AUTO_SYNC = #00100 ! automatically ssync contents and index integer, parameter:: HHWIN_PROP_TRACKING = #00200 ! send tracking notification messages integer, parameter:: HHWIN_PROP_TAB_SEARCH = #00400 ! include search tab in navigation pane integer, parameter:: HHWIN_PROP_TAB_HISTORY = #00800 ! include history tab in navigation pane integer, parameter:: HHWIN_PROP_TAB_BOOKMARKS = #01000 ! include bookmark tab in navigation pane integer, parameter:: HHWIN_PROP_CHANGE_TITLE = #02000 ! Put current HTML title in title bar integer, parameter:: HHWIN_PROP_NAV_ONLY_WIN = #04000 ! Only display the navigation window integer, parameter:: HHWIN_PROP_NO_TOOLBAR = #08000 ! Don't display a toolbar integer, parameter:: HHWIN_PROP_MENU = #10000 ! Menu integer, parameter:: HHWIN_PROP_TAB_ADVSEARCH = #20000 ! Advanced FTS UI. integer, parameter:: HHWIN_PROP_USER_POS = #40000 ! After initial creation, user controls window size/position integer, parameter:: HHWIN_PARAM_PROPERTIES = #00002 ! valid fsWinProperties integer, parameter:: HHWIN_PARAM_STYLES = #00004 ! valid dwStyles integer, parameter:: HHWIN_PARAM_EXSTYLES = #00008 ! valid dwExStyles integer, parameter:: HHWIN_PARAM_RECT = #00010 ! valid rcWindowPos integer, parameter:: HHWIN_PARAM_NAV_WIDTH = #00020 ! valid iNavWidth integer, parameter:: HHWIN_PARAM_SHOWSTATE = #00040 ! valid nShowState integer, parameter:: HHWIN_PARAM_INFOTYPES = #00080 ! valid apInfoTypes integer, parameter:: HHWIN_PARAM_TB_FLAGS = #00100 ! valid fsToolBarFlags integer, parameter:: HHWIN_PARAM_EXPANSION = #00200 ! valid fNotExpanded integer, parameter:: HHWIN_PARAM_TABPOS = #00400 ! valid tabpos integer, parameter:: HHWIN_PARAM_TABORDER = #00800 ! valid taborder integer, parameter:: HHWIN_PARAM_HISTORY_COUNT = #01000 ! valid cHistory integer, parameter:: HHWIN_PARAM_CUR_TAB = #02000 ! valid curNavType integer, parameter:: HHWIN_BUTTON_EXPAND = #000002 ! Expand/contract button integer, parameter:: HHWIN_BUTTON_BACK = #000004 ! Back button integer, parameter:: HHWIN_BUTTON_FORWARD = #000008 ! Forward button integer, parameter:: HHWIN_BUTTON_STOP = #000010 ! Stop button integer, parameter:: HHWIN_BUTTON_REFRESH = #000020 ! Refresh button integer, parameter:: HHWIN_BUTTON_HOME = #000040 ! Home button integer, parameter:: HHWIN_BUTTON_BROWSE_FWD = #000080 ! not implemented integer, parameter:: HHWIN_BUTTON_BROWSE_BCK = #000100 ! not implemented integer, parameter:: HHWIN_BUTTON_NOTES = #000200 ! not implemented integer, parameter:: HHWIN_BUTTON_CONTENTS = #000400 ! not implemented integer, parameter:: HHWIN_BUTTON_SYNC = #000800 ! Sync button integer, parameter:: HHWIN_BUTTON_OPTIONS = #001000 ! Options button integer, parameter:: HHWIN_BUTTON_PRINT = #002000 ! Print button integer, parameter:: HHWIN_BUTTON_INDEX = #004000 ! not implemented integer, parameter:: HHWIN_BUTTON_SEARCH = #008000 ! not implemented integer, parameter:: HHWIN_BUTTON_HISTORY = #010000 ! not implemented integer, parameter:: HHWIN_BUTTON_BOOKMARKS = #020000 ! not implemented integer, parameter:: HHWIN_BUTTON_JUMP1 = #040000 integer, parameter:: HHWIN_BUTTON_JUMP2 = #080000 integer, parameter:: HHWIN_BUTTON_ZOOM = #100000 integer, parameter:: HHWIN_BUTTON_TOC_NEXT = #200000 integer, parameter:: HHWIN_BUTTON_TOC_PREV = #400000 integer, parameter:: HHWIN_DEF_BUTTONS = & HHWIN_BUTTON_EXPAND .OR. & HHWIN_BUTTON_BACK .OR. & HHWIN_BUTTON_OPTIONS .OR. & HHWIN_BUTTON_PRINT ! Button IDs integer, parameter:: IDTB_EXPAND = 200 integer, parameter:: IDTB_CONTRACT = 201 integer, parameter:: IDTB_STOP = 202 integer, parameter:: IDTB_REFRESH = 203 integer, parameter:: IDTB_BACK = 204 integer, parameter:: IDTB_HOME = 205 integer, parameter:: IDTB_SYNC = 206 integer, parameter:: IDTB_PRINT = 207 integer, parameter:: IDTB_OPTIONS = 208 integer, parameter:: IDTB_FORWARD = 209 integer, parameter:: IDTB_NOTES = 210 ! not implemented integer, parameter:: IDTB_BROWSE_FWD = 211 integer, parameter:: IDTB_BROWSE_BACK = 212 integer, parameter:: IDTB_CONTENTS = 213 ! not implemented integer, parameter:: IDTB_INDEX = 214 ! not implemented integer, parameter:: IDTB_SEARCH = 215 ! not implemented integer, parameter:: IDTB_HISTORY = 216 ! not implemented integer, parameter:: IDTB_BOOKMARKS = 217 ! not implemented integer, parameter:: IDTB_JUMP1 = 218 integer, parameter:: IDTB_JUMP2 = 219 integer, parameter:: IDTB_CUSTOMIZE = 221 integer, parameter:: IDTB_ZOOM = 222 integer, parameter:: IDTB_TOC_NEXT = 223 integer, parameter:: IDTB_TOC_PREV = 224 ! Notification codes integer, parameter:: HHN_FIRST = -860 integer, parameter:: HHN_LAST = -879 integer, parameter:: HHN_NAVCOMPLETE =(HHN_FIRST-0) integer, parameter:: HHN_TRACK =(HHN_FIRST-1) integer, parameter:: HHN_WINDOW_CREATE =(HHN_FIRST-2) type T_HHN_NOTIFY type(T_NMHDR) hdr integer pszUrl ! Multi-integer(1), null-terminated string end type T_HHN_NOTIFY type T_HH_POPUP integer(4) cbStruct ! sizeof this structure integer(4) hinst ! instance handle for string resource integer(4) idString ! string resource id, or text id if pszFile is specified in HtmlHelp call integer(4) pszText ! used if idString is zero type(T_POINT) pt ! top center of popup window integer(4) clrForeground ! use -1 for default integer(4) clrBackground ! use -1 for default type(T_RECT) rcMargins ! amount of space between edges of window and text, -1 for each member to ignore integer(4) pszFont ! facename, pointeger(4) size, char set, BOLD ITALIC UNDERLINE end type T_HH_POPUP type T_HH_AKLINK integer(4) cbStruct ! sizeof this structure logical fReserved ! must be FALSE (really!) integer(4) pszKeywords ! semi-colon separated keywords integer(4) pszUrl ! URL to jump to if no keywords found (may be NULL) integer(4) pszMsgText ! Message text to display in MessageBox if pszUrl is NULL and no keyword match integer(4) pszMsgTitle ! Message text to display in MessageBox if pszUrl is NULL and no keyword match integer(4) pszWindow ! Window to display URL in logical fIndexOnFail ! Displays index if keyword lookup fails. end type T_HH_AKLINK integer, parameter:: HHWIN_NAVTYPE_TOC = #0000 integer, parameter:: HHWIN_NAVTYPE_INDEX = #0001 integer, parameter:: HHWIN_NAVTYPE_SEARCH = #0002 integer, parameter:: HHWIN_NAVTYPE_BOOKMARKS = #0003 integer, parameter:: HHWIN_NAVTYPE_HISTORY = #0004 ! not implemented integer, parameter:: IT_INCLUSIVE = #0000 integer, parameter:: IT_EXCLUSIVE = #0001 integer, parameter:: IT_HIDDEN = #0002 type T_HH_ENUM_IT integer(4) cbStruct ! size of this structure integer(4) iType ! the type of the information type ie. Inclusive, Exclusive, or Hidden integer(4) pszCatName ! Set to the name of the Category to enumerate the info types in a category else NULL integer(4) pszITName ! volitile pointeger(4)er to the name of the infotype. Allocated by call. Caller responsible for freeing integer(4) pszITDescription ! volitile pointeger(4)er to the description of the infotype. end type T_HH_ENUM_IT type T_HH_ENUM_CAT integer(4) cbStruct ! size of this structure integer(4) pszCatName ! volitile pointeger(4)er to the category name integer(4) pszCatDescription ! volitile pointeger(4)er to the category description end type T_HH_ENUM_CAT type T_HH_SET_INFOTYPE integer(4) cbStruct ! the size of this structure integer(4) pszCatName ! the name of the category, if any, the InfoType is a member of. integer(4) pszInfoTypeName ! the name of the info type to add to the filter end type T_HH_SET_INFOTYPE integer, parameter:: HHWIN_NAVTAB_TOP = #0000 integer, parameter:: HHWIN_NAVTAB_LEFT = #0001 integer, parameter:: HHWIN_NAVTAB_BOTTOM = #0002 integer, parameter:: HH_MAX_TABS =19 ! maximum number of tabs integer, parameter:: HH_TAB_CONTENTS = #0000 integer, parameter:: HH_TAB_INDEX = #0001 integer, parameter:: HH_TAB_SEARCH = #0002 integer, parameter:: HH_TAB_BOOKMARKS = #0003 integer, parameter:: HH_TAB_HISTORY = #0004 ! HH_DISPLAY_SEARCH Command Related Structures and Constants integer, parameter:: HH_FTS_DEFAULT_PROXIMITY = (-1) type T_HH_FTS_QUERY integer(4) cbStruct ! Sizeof structure in integer(1)s. logical fUniCodeStrings ! TRUE if all strings are unicode. integer(4) pszSearchQuery ! String containing the search query. integer(LONG) iProximity ! Word proximity. logical fStemmedSearch ! TRUE for StemmedSearch only. logical fTitleOnly ! TRUE for Title search only. logical fExecute ! TRUE to initiate the search. integer(HANDLE) pszWindow ! Window to display in end type T_HH_FTS_QUERY ! HH_WINTYPE Structure type T_HH_WINTYPE integer(4) cbStruct ! IN: size of this structure including all Information Types logical fUniCodeStrings ! IN/OUT: TRUE if all strings are in UNICODE integer(4) pszType ! IN/OUT: Name of a type of window integer(4) fsValidMembers ! IN: Bit flag of valid members (HHWIN_PARAM_) integer(4) fsWinProperties ! IN/OUT: Properties/attributes of the window (HHWIN_) integer(4) pszCaption ! IN/OUT: Window title integer(4) dwStyles ! IN/OUT: Window styles integer(4) dwExStyles ! IN/OUT: Extended Window styles type(T_RECT) rcWindowPos ! IN: Starting position, OUT: current position integer(4) nShowState ! IN: show state (e.g., SW_SHOW) integer(4) hwndHelp ! OUT: window handle integer(4) hwndCaller ! OUT: who called this window integer(4) paInfoTypes ! IN: Pointer to an array of Information Types ! The following members are only valid if HHWIN_PROP_TRI_PANE is set integer(4) hwndToolBar ! OUT: toolbar window in tri-pane window integer(4) hwndNavigation ! OUT: navigation window in tri-pane window integer(4) hwndHTML ! OUT: window displaying HTML in tri-pane window integer(4) iNavWidth ! IN/OUT: width of navigation window type(T_RECT) rcHTML ! OUT: HTML window coordinates integer(4) pszToc ! IN: Location of the table of contents file integer(4) pszIndex ! IN: Location of the index file integer(4) pszFile ! IN: Default location of the html file integer(4) pszHome ! IN/OUT: html file to display when Home button is clicked integer(4) fsToolBarFlags ! IN: flags controling the appearance of the toolbar logical fNotExpanded ! IN: TRUE/FALSE to contract or expand, OUT: current state integer(4) curNavType ! IN/OUT: UI to display in the navigational pane integer(4) tabpos ! IN/OUT: HHWIN_NAVTAB_TOP, HHWIN_NAVTAB_LEFT, or HHWIN_NAVTAB_BOTTOM integer(4) idNotify ! IN: ID to use for WM_NOTIFY messages integer(1) tabOrder(HH_MAX_TABS + 1) ! IN/OUT: tab order: Contents, Index, Search, History, Favorites, Reserved 1-5, Custom tabs integer(4) cHistory ! IN/OUT: number of history items to keep (default is 30) integer(4) pszJump1 ! Text for HHWIN_BUTTON_JUMP1 integer(4) pszJump2 ! Text for HHWIN_BUTTON_JUMP2 integer(4) pszUrlJump1 ! URL for HHWIN_BUTTON_JUMP1 integer(4) pszUrlJump2 ! URL for HHWIN_BUTTON_JUMP2 type(T_RECT) rcMinSize ! Minimum size for window (ignored in version 1) integer(4) cbInfoTypes ! size of paInfoTypes end type T_HH_WINTYPE integer, parameter:: HHACT_TAB_CONTENTS = #0000 integer, parameter:: HHACT_TAB_INDEX = #0001 integer, parameter:: HHACT_TAB_SEARCH = #0002 integer, parameter:: HHACT_TAB_HISTORY = #0003 integer, parameter:: HHACT_TAB_FAVORITES = #0004 integer, parameter:: HHACT_EXPAND = #0005 integer, parameter:: HHACT_CONTRACT = #0006 integer, parameter:: HHACT_BACK = #0007 integer, parameter:: HHACT_FORWARD = #0008 integer, parameter:: HHACT_STOP = #0009 integer, parameter:: HHACT_REFRESH = #000A integer, parameter:: HHACT_HOME = #000B integer, parameter:: HHACT_SYNC = #000C integer, parameter:: HHACT_OPTIONS = #000D integer, parameter:: HHACT_PRINT = #000E integer, parameter:: HHACT_HIGHLIGHT = #000F integer, parameter:: HHACT_CUSTOMIZE = #0010 integer, parameter:: HHACT_JUMP1 = #0011 integer, parameter:: HHACT_JUMP2 = #0012 integer, parameter:: HHACT_ZOOM = #0013 integer, parameter:: HHACT_TOC_NEXT = #0014 integer, parameter:: HHACT_TOC_PREV = #0015 integer, parameter:: HHACT_NOTES = #0016 integer, parameter:: HHACT_LAST_ENUM = #0017 type T_HHNTRACK type(T_NMHDR):: hdr integer(4) pszCurUrl ! Multi-integer(1), null-terminated string integer(4) idAction ! HHACT_ value integer(4) phhWintype ! Current window type structure end type T_HHNTRACK interface integer(HANDLE) function HtmlHelp(hwndCaller, pszFile, uCommand, dwData) !DEC$ATTRIBUTES STDCALL, ALIAS: "_HtmlHelpA@16":: HtmlHelp use ifwinty integer(HANDLE) hwndCaller !DEC$ATTRIBUTES REFERENCE:: pszFile character(*) pszFile integer(UINT) uCommand integer(HANDLE) dwData end function HtmlHelp end interface ! Use the following for GetProcAddress to load from hhctrl.ocx integer, parameter:: ATOM_HTMLHELP_API_ANSI =14 integer, parameter:: ATOM_HTMLHELP_API_UNICODE =15 END MODULE HTMLHELPM module Hlp !**************************************** ! routines driving help ! ! ! chacater constants used to point to chm file character*14, parameter :: $EOD="ch01.html#EOD"C character*30, parameter :: $EOD_Installation="ch01s02.html#EOD-Installation"C character*38, parameter :: $EOD_Installation_Modules="ch01s02.html#EOD-Installation.Modules"C character*22, parameter :: $ELENSmod="ch01s02.html#ELENSmod"C character*32, parameter :: $Module_EPERMRZSPCH="ch01s02.html#Module.EPERMRZSPCH"C character*41, parameter :: $EOD_Installation_Plugins="ch01s02s02.html#EOD-Installation.Plugins"C character*29, parameter :: $EOD_CommandLine="ch01s03.html#EOD-CommandLine"C character*37, parameter :: $EOD_CommandLine_Project="ch01s03.html#EOD-CommandLine-Project"C ! integer, parameter :: WM_HELP = #0053 integer, parameter :: CONTEXTHELP = 4 contains recursive subroutine AppHelp(iType,Topic) use user32 use kernel32 use htmlhelpm !-------- start of interfaces --------------- use EODInterfaces !--------- end of interfaces ---------------- implicit none ! do not assume implicit types character*256 HelpFileName,CommandLine,FileName pointer (pCommandLine,CommandLine) character*(*) Topic type (T_HH_FTS_QUERY) HHQ integer*4 ITYPE integer*4 ICOMMAND integer*4 IRET integer*4 I HelpFileName="C:EODEOD.chm"//""C select case (iType) case (1) ! show help contents iCommand=HH_DISPLAY_TOC iret=HtmlHelp(0,& HelpFileName,& iCommand,& 0) case (2) ! show search HHQ.cbStruct=SizeOf(HHQ) HHQ.fUniCodeStrings=.FALSE. ! TRUE if all strings are unicode. HHQ.pszSearchQuery=LOC("ss"C) ! String containing the search query. HHQ.iProximity=HH_FTS_DEFAULT_PROXIMITY ! Word proximity. HHQ.fStemmedSearch=.FALSE. ! TRUE for StemmedSearch only. HHQ.fTitleOnly=.FALSE. ! TRUE for Title search only. HHQ.fExecute=.FALSE. ! TRUE to initiate the search. HHQ.pszWindow=NULL ! Window to display in iCommand=HH_DISPLAY_SEARCH iret=HtmlHelp(0,& HelpFileName,& iCommand,& LOC(HHQ)) case (3) ! index iCommand=HH_DISPLAY_INDEX iret=HtmlHelp(0,& HelpFileName,& iCommand,& 0) case (4) ! index iCommand=HH_DISPLAY_TOPIC iret=HtmlHelp(0,& HelpFileName,& iCommand,& LOC(Topic)) case default iCommand=HH_DISPLAY_TOC end select return end subroutine end module program call help use hlp call AppHelp(CONTEXTHELP,$EOD_Installation_Plugins) ! open help file on EOD plugins end program [/fortran] It is important to link application against "htmlhelp.lib" library.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Quba,
Thanks for this.
I'm having trouble though. the HtmlHelp call under case(4) appears to have all the correct arguments for my chm file and topic, and it runs with return code 0 but does not open the helpfile.
Any ideas about tracking down what is happening?
I know that I can open the helpfile from within my code using SYSTEMQQ with hh.exe -mapid, etc, but this waits until the helpfile is closed before continuing with my app.
Thanks,
David
Thanks for this.
I'm having trouble though. the HtmlHelp call under case(4) appears to have all the correct arguments for my chm file and topic, and it runs with return code 0 but does not open the helpfile.
Any ideas about tracking down what is happening?
I know that I can open the helpfile from within my code using SYSTEMQQ with hh.exe -mapid, etc, but this waits until the helpfile is closed before continuing with my app.
Thanks,
David
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Is Help file opened for example in cases 1 or 3?
If not problem is in help file name. Is it ended by ""C? (I do not know if for example \t in file name is not interpreted as TAB instead \t in this case may be used \\t instead. Try to double all \ in the path to avoid problems)
In case (4) is important:
In $EOD_Installation_Plugins is "ch01s02s02.html#EOD-Installation.Plugins"C
It means that help file was compiled also from file ch01s02s02.html and in this file is
Also notice that character is ended by ""C so it is C string.
If not problem is in help file name. Is it ended by ""C? (I do not know if for example \t in file name is not interpreted as TAB instead \t in this case may be used \\t instead. Try to double all \ in the path to avoid problems)
In case (4) is important:
In $EOD_Installation_Plugins is "ch01s02s02.html#EOD-Installation.Plugins"C
It means that help file was compiled also from file ch01s02s02.html and in this file is
Also notice that character is ended by ""C so it is C string.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Since my helpfile is in the same folder as my executable, I was only passing the filename. I am now passing the full path and name and it is now working.
Thanks,
David
Thanks,
David

Reply
Topic Options
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page