Реализация функций контроля и управления на базе Win32 API: Методические указания по выполнению лабораторного практикума, страница 21

{

// преобразование буфера

 OemToChar(buf,buf);

}

4.  В заголовочном файле <unit_s>.h ввести описание экспортируемой функции. Пример приведен ниже.

//---------------------------------------------------------------------------

#ifndef MainLab2sH

#define MainLab2sH

//---------------------------------------------------------------------------

extern "C" __declspec(dllexport) void ConvertTxt(char *buf);

#endif

5.  В опциях проекта Project|Options… в окне Advanced Compiler опцию Calling Convention установить в состояние Standart Call.

6.  Выполнить компиляцию проекта. В результате компиляции будут сгенерированы два файла - <user_s>.dll(DLL-модуль) и <user_s>.lib (файл, который содержит список функций данной DLL).

7.  Вызвать свой проект из задания первой лабораторной работы.

8.  В процедуре реакции на событие нажатия кнопки "Преобразовать в ANSI" вместо функции API преобразования буфера в ANSI-формат установить вызов функции из DLL-модуля. Пример процедуры приведен ниже.

//---------------------------------------------------------------------------

void __fastcall TForm1::Button3Click(TObject *Sender)

// преобразование в ANSI

{

 char *txt;

 txt = new char [RichEdit1->Lines->Text.Length()];

// чтение в буфер

 strcpy(txt,RichEdit1->Lines->Text.c_str());

// преобразование буфера

// вызов DLL статически

  ConvertTxt(txt);

// запись в MEMO

 RichEdit1->Lines->Text=(AnsiString)txt;

 delete txt;

}

//---------------------------------------------------------------------------

9.  В заголовочном файле <unit>.hpp ввести описание импортируемой функции. Пример приведен ниже.

//---------------------------------------------------------------------------

// функции DLL

extern "C" __declspec(dllimport) void ConvertTxt(char *buf);

10.  Включить в проект приложения LIB-файл DLL-модуля. Для этого с помощью команды Project|Add to Projectвызвать окно Add to Project. В качестве типа файла задать Library file (*.lib). Выбрать файл <user_s>.lib и нажать кнопку "Открыть".

11. Выполнить компиляцию. Устранить ошибки и проверить правильность выполнения функции.

12.  Для отладки DLL-модуля необходимо выполнить следующие действия:

·  вызвать проект DLL-модуля;

·  установить параметры в окне Run Parameters. В поле Host applicationиспользуя кнопку Browseустановить имя ЕХЕ-файла, из которого вызывается функция DLL. В поле Run Parametersпрописать имя вызываемой функции DLL (ConvertTxt);

·  установить точку останова в функции ConvertTxt();

·  выполнить запуск Run. В начале запускается ЕХЕ-файл, при нажатии на кнопку "Преобразовать в ANSI" управление передается функции DLL и отладчик останавливается в указанной точке останова;

·  для отладки DLL-модуля используются те же  правила и методы, что и при отладке обычного ЕХЕ-модуля.

13. Открыть новый проект для разработки DLL, используя команду File|New. В окне Newвыбрать приложение с иконкой DLL. Сохранить новый проект в папке D:/VMSS/U41(U42)/<user_d>, используя команду File|Project As. Имена папки, проекта <user_d> и файла присваиваются самостоятельно.

14. Открыть новый модуль, используя команду File|New Unit. Сохранить новый модуль в папке D:/VMSS/U41(U42)/<unit_d>, используя команду File|Save As. Имя файла модуля <unit_d> присваивается самостоятельно.

15. В файле <unit_d> ввести функцию поиска ключевого слова и преобразования текста в RTF-формат. Ключевое слово и сам текст передаются через файл 123.rtf. За основу рекомендуется взять отлаженную функцию из первой лабораторной работы. Пример функции приведен ниже.

//---------------------------------------------------------------------------

extern "C" __declspec(dllexport) int SearchConRTF(void)