用ShellExecute调用chm文件时,怎么样实现一打开chm文件时就到指定的html中??

解决方案 »

  1.   

    只有BCB的代码,这个是用CHM的上下文关联做的,还需要在控件的HELPCONTEXT中设置关联
    void __fastcall TForm1::MyHelp(Messages::TMessage &Message)
    {
        HELPINFO *HI = (HELPINFO*)Message.LParam;
        TWinControl *WC;
        TMenuItem *MI;
        TMenu *Menu;
        // 主菜单上传来的WM_HELP消息
        if(HI->iContextType == HELPINFO_MENUITEM)
        {
            for(int i=0; i<this->ComponentCount; i++)
            {
                Menu = dynamic_cast<TMenu *>(this->Components[i]);
                if(Menu != NULL)
                {
                    MI = Menu->FindItem(HI->iCtrlId, fkCommand);
                    if(MI != NULL)
                    {
                        break;
                    }
                }
            }
            if(MI != NULL && MI->HelpContext != 0)
            {
                HtmlHelp(this->Handle, Application->HelpFile.c_str(), HH_HELP_CONTEXT, MI->HelpContext);
            }
            else
            {
                HtmlHelp(this->Handle, Application->HelpFile.c_str(), HH_DISPLAY_TOPIC, 0);
            }    }
        // 活动控件上传来的WM_HELP消息
        else
        {
            WC = FindControl(HI->hItemHandle);
            if(WC != NULL && WC->HelpContext != 0)
            {
                HtmlHelp(this->Handle, Application->HelpFile.c_str(), HH_HELP_CONTEXT, WC->HelpContext);
            }
            else
            {
                HtmlHelp(this->Handle, Application->HelpFile.c_str(), HH_DISPLAY_TOPIC, 0);
            }
        }
    }