Valery52 |
Отправлено: 14.02.2007, 10:54 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 8
|
Хочу на BCB6 создать контекстную справку используя файл CHM.
Установил компонент Aktive X Hhopen.ocx в BCB6.
Создал на HTML справочный файл Vvedenie.chm с одним разделом
Vvedenie.
Использовал пример создания справки для Delfi, на делфи все работает.
Вот текст для ВСВ6:
//---------------------------------------------------------------------------
#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include
#include
#include
#include
#include "HHOPENLib_OCX.h"
#include
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published: // IDE-managed Components
TButton *Button_Help;
THhopen *Hhopen1;
void __fastcall Button_HelpClick(TObject *Sender);
private: // User declarations
public: // User declarations
__fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif
//---------------------------------------------------------------------------
#include
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "HHOPENLib_OCX"
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button_HelpClick(TObject *Sender)
{
AnsiString HtmlFHlp = "Vvedenie.chm"; // файл справки
AnsiString HtmlTHlp = "Vvedenie"; //раздел справки (имя HTML-файла)
PWideChar pwHelpFile; // файл справки (указатель на строку WideChar)
PWideChar pwHelpTopic;// раздел (указатель на строку WideChar)
// выделить память для строк WideChar
pwHelpFile = new wchar_t[HtmlFHlp.Length() * 2];
pwHelpTopic = new wchar_t[HtmlTHlp.Length() * 2];
// преобразовать Ansi-строку в WideString-строку
pwHelpFile = StringToWideChar(HtmlFHlp, pwHelpFile, MAX_PATH * 2);
pwHelpTopic = StringToWideChar(HtmlTHlp, pwHelpTopic, 32);
// вывести справочную информацию
Hhopen1->OpenHelp(pwHelpFile, pwHelpTopic);
//Закрыть окно
Hhopen1->CloseHelp();
//Освободить память
delete []pwHelpFile;
delete []pwHelpTopic;
}
//---------------------------------------------------------------------------
При сосздании формы справки, происходит зависание, отладчик выдает на экран ассемблерный код.
Пытался скачать с этой ссылки
http://www.bauklimatik-dresden.de/CHAMPS/b...b_material.html руководство, не получается.
Прошу подсказать, где ошибка? |
|
nawok78 |
Отправлено: 14.02.2007, 12:46 |
|
Станционный диспетчер
Группа: Участник
Сообщений: 115
|
я так понимаю 1 символ занимает 2 байта?
CODE |
// выделить память для строк WideChar
pwHelpFile = new wchar_t[HtmlFHlp.Length() * 2];
pwHelpTopic = new wchar_t[HtmlTHlp.Length() * 2];
|
а конец строки как узнать?
если нужен символ конца строки то надо выделять память еще и для него |
|
Valery52 |
Отправлено: 15.02.2007, 13:56 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 8
|
Я сделал так:
CODE |
// выделить память для строк WideChar
pwHelpFile = new wchar_t[(HtmlFHlp.Length()+1) * 2];
pwHelpTopic = new wchar_t[(HtmlTHlp.Length() +1)* 2];
|
ни чего не изменилось.
Спасибо за внимание, удалось скачать htmlhelp_support.zip.
Builder все больше меня разочаровывает.
|
|
nawok78 |
Отправлено: 15.02.2007, 14:41 |
|
Станционный диспетчер
Группа: Участник
Сообщений: 115
|
на какой строке зависает?
по F8 гонял? |
|
Valery52 |
Отправлено: 16.02.2007, 09:59 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 8
|
Зависает на функции
Hhopen1->OpenHelp(pwHelpFile, pwHelpTopic);
Функция начинает работать, появляется окно справки без текста и несформированное до конца, а далее:
CODE |
Окно CPU:
77F767CC C3 ret
ntdll.DbgBreakPoint:
77F767CD CC int 3
=> 77F767CE C3 ret
ntdll.DbgUserBreakPoint:
77F767CF CC int 3
|
И более не каких сообщений. |
|