Re: How do I launch a .hlp file from a Euphoria windows program?
- Posted by CChris <christian.cuvier at agriculture.gouv.fr> Apr 03, 2007
- 782 views
Pete Stoner wrote: > > Andrew Katz wrote: > > > > I was wondering how to start a Microsoft Windows hlp file from a Euphoria > > windows > > program? > > > > I noticed that people are using HTML for help, even in Euphoria. So, should > > I be writing help in that form? > > > > To launch a compilied HTML (chm) help file, I use this include (hh.ew - not > sure who wrote it or where I found it so apologies to the author..) > > }}} <eucode> > -- HtmlHelp function for opening context sensitive help > include w32support.e > > constant > HH = open_dll( "hhctrl.ocx" ), > HtmlHelp = define_c_func( HH, "HtmlHelpA", {C_POINTER, C_POINTER, C_UINT, > C_LONG}, C_POINTER) > > -- Commands to pass to HtmlHelp() > global constant > HH_DISPLAY_TOPIC = #0000, -- i.e. format for 'file' = > "myHelp.chm::\\topic1.htm" ('data' = NULL) > HH_HELP_FINDER = #0000, -- WinHelp equivalent > HH_DISPLAY_TOC = #0001, > HH_DISPLAY_INDEX = #0002, > HH_DISPLAY_SEARCH = #0003, > HH_SET_WIN_TYPE = #0004, > HH_GET_WIN_TYPE = #0005, > HH_GET_WIN_HANDLE = #0006, > HH_ENUM_INFO_TYPE = #0007, -- Get Info type name, call repeatedly to > enumerate, -1 at end > HH_SET_INFO_TYPE = #0008, -- Add Info type to filter. > HH_SYNC = #0009, > HH_RESERVED1 = #000A, > HH_RESERVED2 = #000B, > HH_RESERVED3 = #000C, > HH_KEYWORD_LOOKUP = #000D, > HH_DISPLAY_TEXT_POPUP = #000E, -- display string resource id or text in a > popup window > HH_HELP_CONTEXT = #000F, -- display mapped numeric value in dwData > HH_TP_HELP_CONTEXTMENU = #0010, -- text popup help, same as WinHelp > HELP_CONTEXTMENU > HH_TP_HELP_WM_HELP = #0011, -- text popup help, same as WinHelp > HELP_WM_HELP > HH_CLOSE_ALL = #0012, -- close all windows opened directly or > indirectly by the caller > HH_ALINK_LOOKUP = #0013, -- ALink version of HH_KEYWORD_LOOKUP > HH_GET_LAST_ERROR = #0014, -- not currently implemented -- See > HHERROR.h > HH_ENUM_CATEGORY = #0015, -- Get category name, call repeatedly to > enumerate, -1 at end > HH_ENUM_CATEGORY_IT = #0016, -- Get category info type members, call > repeatedly to enumerate, -1 at end > HH_RESET_IT_FILTER = #0017, -- Clear the info type filter of all info > types. > HH_SET_INCLUSIVE_FILTER = #0018, -- set inclusive filtering method for > untyped topics to be included in display > HH_SET_EXCLUSIVE_FILTER = #0019, -- set exclusive filtering method for > untyped topics to be excluded from display > HH_INITIALIZE = #001C, -- Initializes the help system. > HH_UNINITIALIZE = #001D, -- Uninitializes the help system. > HH_PRETRANSLATEMESSAGE = #00FD, -- Pumps messages. (NULL, NULL, MSG*). > HH_SET_GLOBAL_PROPERTY = #00FC -- Set a global property. (NULL, NULL, > HH_GPROP) > > -- structure HH_AKLINK > constant > cbStruct = w32allot( Long ), -- sizeof this structure > fReserved = w32allot( Long ), -- must be FALSE (really!) > pszKeywords = w32allot( Lpsz ), -- semi-colon separated keywords > pszURL = w32allot( Lpsz ), -- URL to jump to if no keywords found (may > be NULL) > pszMsgText = w32allot( Lpsz ), -- Message text to display in MessageBox if > pszUrl is NULL and no keyword match > pszMsgTitle = w32allot( Lpsz ), -- Message text to display in MessageBox if > pszUrl is NULL and no keyword match > pszWindow = w32allot( Lpsz ), -- Window to display URL in > fIndexOnFail = w32allot( Long ), -- Displays index if keyword lookup fails. > SIZEOF_HH_AKLINK = w32allotted_size() > ------------------------------ > global function htmlHelp( atom hwndCaller, object file, integer command, > object data ) > atom pszFile, ret, aklink > > if sequence(file) then > pszFile = allocate_string(file) > else > pszFile = file > end if > if command = HH_ALINK_LOOKUP or command = HH_KEYWORD_LOOKUP then > aklink = w32acquire_mem(0,SIZEOF_HH_AKLINK) > w32store(aklink,cbStruct,SIZEOF_HH_AKLINK) > w32store(aklink,pszKeywords,data) > w32store(aklink,fIndexOnFail,1) > ret = c_func(HtmlHelp,{hwndCaller,pszFile,command,aklink}) > w32release_mem(aklink) > else > ret = c_func(HtmlHelp,{hwndCaller,pszFile,command,data}) > end if > if sequence(file) then > free( pszFile ) > end if > return ret > end function > </eucode> {{{ > > Then call it with.. > }}} <eucode> > -- returns 0 if failure > helpRes = htmlHelp( getHandle(OwningWindowName), > full_path_to_.chm file::\\MainScreen.htm", HH_DISPLAY_TOC, NULL) > </eucode> {{{ > with the "::MainScreen.htm" it will open the chm file at that page, so you can > easily have context sensitive help by opening at the appropriate page.. > > Regards PeteS This include file is part of the "Euphoria 2.5 Documentation as Compiled HTML" submitted by Brian Broker on 03/10/05. I had to search the forum first, and an old post by Rad put me on the right track for finding it. CChris