link9798 link9799 link9800 link9801 link9802 link9803 link9804 link9805 link9806 link9807 link9808 link9809 link9810 link9811 link9812 link9813 link9814 link9815 link9816 link9817 link9818 link9819 link9820 link9821 link9822 link9823 link9824 link9825 link9826 link9827 link9828 link9829 link9830 link9831 link9832 link9833 link9834 link9835 link9836 link9837 link9838 link9839 link9840 link9841 link9842 link9843 link9844 link9845 link9846 link9847 link9848 link9849 link9850 link9851 link9852 link9853 link9854 link9855 link9856 link9857 link9858 link9859 link9860 link9861 link9862 link9863 link9864 link9865 link9866 link9867 link9868 link9869 link9870 link9871 link9872 link9873 link9874 link9875 link9876 link9877 link9878 link9879 link9880 link9881 link9882 link9883 link9884 link9885 link9886 link9887 link9888 link9889 link9890 link9891 link9892 link9893 link9894 link9895 link9896 link9897 link9898 link9899 link9900 link9901 link9902 link9903 link9904 link9905 link9906 link9907 link9908 link9909 link9910 link9911 link9912 link9913 link9914 link9915 link9916 link9917 link9918 link9919 link9920 link9921 link9922 link9923 link9924 link9925 link9926 link9927 link9928 link9929 link9930 link9931 link9932 link9933 link9934 link9935 link9936 link9937 link9938 link9939
C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
BCB6 со справкой CHM
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

И более не каких сообщений.

Вернуться в Вопросы программирования в C++Builder