link5600 link5601 link5602 link5603 link5604 link5605 link5606 link5607 link5608 link5609 link5610 link5611 link5612 link5613 link5614 link5615 link5616 link5617 link5618 link5619 link5620 link5621 link5622 link5623 link5624 link5625 link5626 link5627 link5628 link5629 link5630 link5631 link5632 link5633 link5634 link5635 link5636 link5637 link5638 link5639 link5640 link5641 link5642 link5643 link5644 link5645 link5646 link5647 link5648 link5649 link5650 link5651 link5652 link5653 link5654 link5655 link5656 link5657 link5658 link5659 link5660 link5661 link5662 link5663 link5664 link5665 link5666 link5667 link5668 link5669 link5670 link5671 link5672 link5673 link5674 link5675 link5676 link5677 link5678 link5679 link5680 link5681 link5682 link5683 link5684 link5685 link5686 link5687 link5688 link5689 link5690 link5691 link5692 link5693 link5694 link5695 link5696 link5697 link5698 link5699 link5700 link5701 link5702 link5703 link5704 link5705 link5706 link5707 link5708 link5709 link5710 link5711 link5712 link5713 link5714 link5715 link5716 link5717 link5718 link5719 link5720 link5721 link5722 link5723 link5724 link5725 link5726 link5727 link5728 link5729 link5730 link5731 link5732 link5733 link5734 link5735 link5736 link5737 link5738 link5739
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