zoukankan      html  css  js  c++  java
  • 为应用程序制作帮助文件

      本文简要介绍如何为应用程序制作一个帮助文件。

      我们需要借助的工具软件清单如下:

      (1)支持Rtf格式的文字处理软件,例如 Office 中的Word。

      (2)Help WorkShop。(由VC6携带安装的一个工具)

      步骤1:用文字处理软件编辑你的帮助文件(*.rtf),这个文件定义你的帮助文件中的一些主题(Topic),每个topic实际上就是用WinHelp显示的一个页面。这一部本质上就属于文字处理了,只是你需要在保存的时候选择rtf格式。需要特别掌握的是以下几点:

     

      每个topic结束后追加一个分页符。 在每个topic的最前面可以添加以下脚注(添加的脚注请使用以下编号):

      #:你的topic的一个唯一标识符,它是必须的,也是做链接时需要用到的。

      K:定义该topic的关键字,用英文分号分割;

      $:定义该topic的标题,它将显示在winhelp的历史窗口,查找等地方。

      制作链接时,把链接的文本用双下划线格式,然后在文本后面添加一段隐藏文本,输入要链接的topic的唯一标示符。

      制作出来的rtf文档效果如下图所示: 下图显示的是帮助文件的目录,里面包含了到每个topic的链接。

      

      下图显示的是为某个topic添加的脚注:

      

      (2)创建一个Help项目:打开 Microsoft help workshop 软件, 点击File -> New ->选择 Help Project;

      建立好项目以后,我们可以使用右侧的那些按钮去设置这个项目的一些信息,过程很简单,这里就不详细介绍了, 细节可以查阅 help workshop 的帮助文件。设置好的项目如下图所示:

      

      (3)先把项目保存,然后我们用help workshop 创建帮助文件的内容文件(*.cnt)。 使用菜单 File->New-> 选择help Contents。然后我们添加目录(Head,一本书的图标)和Topic(文件图标),使用 MoveLeft 和 MoveRight 按钮可以修改缩进。做好的 Contents 效果如下图所示:

      

      (4)把 contents文件保存,然后打开刚才的help Project, 在Options的 Files 标签页中填加 Contents 文件。如下图所示:

      

      然后我们点击“ Save and compile ” 按钮编译帮助文件,编译成功以后,通过菜单 File -> Run Winhelp 可以看到我们做的帮助文件的效果如下图所示:

      

      帮助文件基本做好了,现在我们为我们的应用程序添加对帮助的支持,首先我们在资源中打开窗口的菜单资源,在帮助菜单下添加下面几项:

      帮助主题(IDM_HELPCONTENTS), 内容(IDM_HELPCONTENTS),搜索帮助(IDM_HELPSEARCH),然后我们在窗口过程中处理WM_COMMAND消息时添加对这几个菜单的处理,相关代码如下:

    code_wndproc
    //获取和程序位于同一个目录下文件的绝对路径

    void GetAppFolderFileName(char *buffer, char* shortFileName)
    {
        
    char* pChar = NULL;
        GetModuleFileName(NULL, buffer, MAX_PATH);
        pChar 
    = strrchr(buffer, '\\');
        
    if(pChar != NULL)
        {
            strcpy(pChar 
    + 1, shortFileName);
        }
    }

    LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
    {
        WORD ctlId, wmEvent;
        
    switch (message) 
        {
        
    case WM_HELP: //F1
            {
                
    //获取和程序位于同一个目录下文件的绝对路径
                char buffer[MAX_PATH];
                GetAppFolderFileName(buffer, 
    "RFCARD.HLP");
                WinHelp (hWnd, buffer, HELP_CONTENTS,(DWORD)
    0);

            }
            
    break;
        
    case WM_COMMAND:
            ctlId    
    = LOWORD(wParam); 
            wmEvent 
    = HIWORD(wParam); 
            
    switch (ctlId)
            {
            
    case IDM_HELPTOPICS: // "Help Topics..."
                {                
                    
    char buffer[MAX_PATH];
                    GetAppFolderFileName(buffer, 
    "RFCARD.HLP");
                    WinHelp (hWnd, buffer, HELP_FINDER,(DWORD)
    0);
                }
                
    break;
            
    case IDM_HELPCONTENTS: // "Contents"
                {
                    
    char buffer[MAX_PATH];
                    GetAppFolderFileName(buffer, 
    "RFCARD.HLP");
                    WinHelp (hWnd, buffer, HELP_CONTENTS,(DWORD)
    0);
                }
                
    break;
            
    case IDM_HELPSEARCH: // "Search for Help On..."
                {
                    
    char buffer[MAX_PATH];
                    GetAppFolderFileName(buffer, 
    "RFCARD.HLP");
                    WinHelp(hWnd, buffer, HELP_PARTIALKEY, (DWORD)(LPSTR)
    "");
                }
                
    break;
            
    default:
                
    return DefWindowProc(hWnd, message, wParam, lParam);
            }
            
    break;
        }
    }


      然后我们重新编译我们的应用程序,成功以后,可以在应用程序处于前台时按下F1键(程序将收到WM_HELP消息),或者点击帮助下面的菜单,查看效果可能如下图所示:

       

      

      

      本文参考以下资料:

      (1)崔晓阳,实例简述Hlp帮助文件的制作,《农业网络信息》2007年第9期。

      (2)MSDN:ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.WIN32COM.v10.en/dnwui/html/msdn_generic.htm

        Robert B. Hess, Generic: Anatomy of a Simple Win32 Application, Windows User Interface Technical Articles, October 17, 1994; 

  • 相关阅读:
    【leetcode】1365. How Many Numbers Are Smaller Than the Current Number
    【leetcode】1363. Largest Multiple of Three
    【leetcode】1362. Closest Divisors
    【leetcode】1361. Validate Binary Tree Nodes
    【leetcode】1360. Number of Days Between Two Dates
    【leetcode】1359. Count All Valid Pickup and Delivery Options
    【leetcode】1357. Apply Discount Every n Orders
    【leetcode】1356. Sort Integers by The Number of 1 Bits
    ISE应用入门的一些问题
    DDR的型号问题
  • 原文地址:https://www.cnblogs.com/hoodlum1980/p/1645977.html
Copyright © 2011-2022 走看看