Объектно-ориентированное программирование на С++ - eDrive
Объектно-ориентированное программирование на С++ - eDrive Объектно-ориентированное программирование на С++ - eDrive
78 Для динамического подключения пакетов вызывающее приложение следует оснащать функциями LoadPackage и FreePackage вместо LoadLibrary и FreeLibrary. Ресурсы Ресурсы – это битовые образы, хранящиеся непосредственно в исполнительном файле, а не отдельно от приложения. При создании приложения ресурсы помещаются в файл ресурсов проекта .RES автоматически или командой SaveToResource и могут загружаться из него командой LoadFromResource. Ресурсы создаются с помощью встроенного в C++Builder графического редактора Image Editor и им же включаются в файл ресурсов приложения как графические образы Bitmaps, указатели мыши Cursors и значки Icons. Этот же редактор используется для создания отдельных файлов типов .RES, .BMP, .ICO, .CUR, которые впоследствии могут быть подключены к другим проектам. Например, для добавления в текущий файл ресурсов нового значка надо в меню File.Open редактора Image Editor открыть файл ресурсов проекта (.RES). Далее через меню Resource.New.Icon создать новый значок и, выделив его, открыть окно редактора (Resource.Edit), нарисовать или импортировать значок и закрыть окно. Через меню Resource.Rename назвать значок, например, MYICON. и сохранить его. Аналогичным образом через меню Resource.New.Cursor создать новый курсор, открыть окно редактора, нарисовать или импортировать курсор и закрыть окно. Через меню Resource.Rename назвать курсор, например, MYCURSOR. В заключение остается сохранить файл ресурсов и закрыть Image Editor. Для создания нового файла ресурсов с графическим образом дается команда New.Resource File в меню File. В окне ресурсов новый рисунок формируется по команде Resource.New.Bitmap редактором Resource.Edit или копируется через буфер обмена и сохраняется (File.Save) в одной папке с приложением. Пользуясь Image Editor, таким же путем создаются отдельные файлы значков и курсоры.
79 Для подключения нового файла ресурсов к проекту вводится директива препроцессора #pragma resource "имяФайла.res" и дается команда загрузки, например: Image1–>LoadFromResourceName ((int)HInstance, “имяРесурса”) Примеры подключения новых курсоров и значков: const TCursor cur = 5; // свободная константа Screen–>Cursors[cur] = LoadCursor (HInstance, "MYCURSOR"); Cursor = cur; // новый курсор Icon–>Handle = LoadIcon (HInstance, "MYICON"); // новый значок Значки и курсоры из отдельных файлов подключаются методом LoadFromFile (имяФайла.ico) объекта Icon и функцией LoadCursorFromFile (имяФайла.cur) вместо LoadCursor. Для работы с обновленным файлом ресурсов следует закрыть приложение, затем вновь открыть и перестроить его. Потоки Потоки – это отдельно работающие части одной программы. Многие программы используют несколько потоков, среди которых можно выделить первичный поток, отвечающий за создание окон и обработку сообщений, и вторичные потоки, в которых выполняются фоновые операции: загрузка больших файлов, проведение вычислений и т. п. В С++Builder потоками управляет абстрактный класс TThread, и каждый вторичный поток представляет отдельный экземпляр наследника этого класса. Поток создается через меню File.New на базе шаблона TThread Object в виде модуля без формы и кроме обычного конструктора содержит заготовку исполнительного метода Execute. В отличие от конструктора формы, конструктор потока имеет параметр CreateSuspended. Когда он установлен (true), созданный поток сразу не запускается, а ожидает вызова стартового метода Resume. В противном случае сразу вслед за созданием происходит запуск потока. Наиболее распространенные характеристики класса TThread приведены в табл. 16.
- Page 27 and 28: Метод IsDelimiter (AnsiString&
- Page 29 and 30: 29 Variant v = Edit3->Text; Label3-
- Page 31 and 32: 31 6. Как передаются
- Page 33 and 34: Условный оператор 3
- Page 35 and 36: } 35 case 4: day = "Четверг"
- Page 37 and 38: 37 void Whiles1 () { int temp = 10,
- Page 39 and 40: 39 В следующем приме
- Page 41 and 42: 41 Число байтов, выд
- Page 43 and 44: Перестановки и сор
- Page 45 and 46: } 45 for (int i=1; i=0 + 1; - -j) i
- Page 47 and 48: 47 нять, создавать с
- Page 49 and 50: lb->LoadFromFile (“1.txt”); Sho
- Page 51 and 52: 51 При передаче в фу
- Page 53 and 54: 53 } // 0 1 Иванов 2 Петр
- Page 55 and 56: 55 void Info (TList *vl) { AnsiStri
- Page 57 and 58: Allocate (k[0], k[1], book1); Alloc
- Page 59 and 60: 59 else ShowMessage ("Такой ч
- Page 61 and 62: 61 for (rj=n.rbegin (); rj!=n.rend
- Page 63 and 64: int i, d[] = { 5, 2, 3, 8, 3, 1, 3
- Page 65 and 66: 22. Каков принцип де
- Page 67 and 68: StringGrid1->Cells[0][j] = myS[j].a
- Page 69 and 70: void Files2 () { AnsiString from =
- Page 71 and 72: void _ _fastcall TForm1::DelFromFil
- Page 73 and 74: 73 Фрагмент обработ
- Page 75 and 76: 75 отказ в доступе, EM
- Page 77: 77 //myApplication.cpp #include "my
- Page 81 and 82: 81 Управление созда
- Page 83 and 84: 83 Контрольные вопр
- Page 85 and 86: 85 для построения ма
- Page 87 and 88: 87 В C++Builder все подкл
- Page 89 and 90: 89 ODBC в папке Панель
- Page 91 and 92: void _ _fastcall TDBForm1::ConnectC
- Page 93 and 94: 93 Для подключения з
- Page 95 and 96: 95 Контрольные вопр
- Page 97 and 98: class VPC { private: int type; Ansi
- Page 99 and 100: 99 AnsiString result; VDeque *curso
- Page 101 and 102: } 101 VList a (3); // констр
- Page 103 and 104: }; VStackAndQueue (AnsiString str);
- Page 105 and 106: }; 105 public: VSecond (AnsiString
- Page 107 and 108: } ShowMessage ("Старое вре
- Page 109 and 110: } 109 AnsiString temp; for (i=0; i
- Page 111 and 112: 111 }; int VPrice::operator > (cons
- Page 113 and 114: 113 void MainVVector () { VVector
- Page 115 and 116: 115 void MainVEqu() { // x + 4y = 9
- Page 117 and 118: 117 Виртуальные функ
- Page 119 and 120: 119 virtual Тип имяФункц
- Page 121 and 122: 121 7. В чем заключает
- Page 123 and 124: 123 • руководство си
- Page 125 and 126: 125 Предметный указа
- Page 127: 5 Валерий Михайлови
79<br />
Для подключения нового файла ресурсов к проекту вводится директива<br />
препроцессора #pragma resource "имяФайла.res" и дается команда загрузки,<br />
<strong>на</strong>пример:<br />
Image1–>LoadFromResourceName ((int)HInstance, “имяРесурса”)<br />
Примеры подключения новых курсоров и з<strong>на</strong>чков:<br />
const TCursor cur = 5;<br />
// свобод<strong>на</strong>я константа<br />
Screen–>Cursors[cur] = LoadCursor (HInstance, "MYCURSOR");<br />
Cursor = cur;<br />
// новый курсор<br />
Icon–>Handle = LoadIcon (HInstance, "MYICON"); // новый з<strong>на</strong>чок<br />
З<strong>на</strong>чки и курсоры из отдельных файлов подключаются методом<br />
LoadFromFile (имяФайла.ico) объекта Icon и функцией LoadCursorFromFile<br />
(имяФайла.cur) вместо LoadCursor.<br />
Для работы с обновленным файлом ресурсов следует закрыть приложение,<br />
затем вновь открыть и перестроить его.<br />
Потоки<br />
Потоки – это отдельно работающие части одной программы. Многие<br />
программы используют несколько потоков, среди которых можно выделить<br />
первичный поток, отвечающий за создание окон и обработку сообщений, и<br />
вторичные потоки, в которых выполняются фоновые операции: загрузка<br />
больших файлов, проведение вычислений и т. п.<br />
В <strong>С++</strong>Builder потоками управляет абстрактный класс TThread, и каждый<br />
вторичный поток представляет отдельный экземпляр <strong>на</strong>следника этого<br />
класса.<br />
Поток создается через меню File.New <strong>на</strong> базе шабло<strong>на</strong> TThread Object в<br />
виде модуля без формы и кроме обычного конструктора содержит заготовку<br />
исполнительного метода Execute. В отличие от конструктора формы, конструктор<br />
потока имеет параметр CreateSuspended. Когда он установлен (true),<br />
созданный поток сразу не запускается, а ожидает вызова стартового метода<br />
Resume. В противном случае сразу вслед за созданием происходит запуск<br />
потока.<br />
Наиболее распространенные характеристики класса TThread приведены<br />
в табл. 16.