ну, поделюсь, как это сделано у нас.
1. есть файлик, обычный текстовый. допустим, назовем его "asdf.commands", лежащий рядом с ARX файлами, в котором идет запись такого рода:
"имя_команды имя_chm_файла имя_html_файла_справки_данной_команды_без_точка_htm"
в оригинале это выглядит так (называем страничку, описывающую команду по имени команды):
mycommand1 helpfile.chm mycommand1
mycommand2 helpfile.chm mycommand2
mycommand3 helpfile.chm mycommand3
mycommand4 helpfile.chm mycommand4
2. дальше, есть такая функция, которая разбирает этот файл на составляющие и помогает акаду приспособиться к тому, что мы будем жмакать F1
void activateHelpConnector()
{
CString curPath = getCurARXPath(); // это путь к папке, где установлена текущая ARX
CString hlpConnectorFile = curPath + _T("\\asdf.commands");// этот файл также лежит в корне папки проги
curPath.AppendChar(_T('\\'));
if ( TRUE == ::PathFileExists(hlpConnectorFile.GetString()) )
{
FILE* fin = _tfopen(hlpConnectorFile.GetString(),_T("r"));
if(!fin) return;
ACHAR strCommand[_MAX_PATH];
ACHAR strFile[_MAX_PATH];
ACHAR strAlias[_MAX_PATH];
CString localHelpFile;
while(!feof(fin))
{
_tcsncpy(strCommand,_T("\0"),_MAX_PATH);
_tcsncpy(strFile,_T("\0"),_MAX_PATH);
_tcsncpy(strAlias,_T("\0"),_MAX_PATH);
localHelpFile.Empty();
localHelpFile.Append(curPath.GetString());
_ftscanf(fin,_T("%s%s%s"),strCommand,strFile,strAlias);
localHelpFile.Append(strFile);
acedSetFunHelp(strCommand,localHelpFile.GetString(),strAlias,0);
}
fclose(fin);
}
}
3. вызов функции. в любую ARX в функцию
On_kInitAppMsg всовываем
activateHelpConnector();4. ну и собственно есть CUIX файл, в котором прописаны все команды, панельки, рибоны, меню и т.д.
PS: мы ерундой не занимались с добавлением XAML файлов, описывающих команду (ну как в автокаде, если подвел мушку к кнопке команды, то сразу выпадает простой вариант справки (это есть и так, а вот дальше работает XAML), а через несколько секунд расширяется окошко. появляется красивая картинка и пару строк текста). так что при желании можно понаписывать таких файликов, включить в программу папку с картинками для акадовской хинтовой справки, и будет полное счастье.
Вроде всё. вот так работает у нас справка по F1, без малейшего использования .NET или чего-то еще экзотического.