Программирование под Win32


Программирование для Windows с помощью библиотеки объектов OWL - стр. 64


TCheckBox*  checkBox1=new TCheckBox(this,IDC_F);

вполне допустима краткая форма без указания имени указателя на создаваемый объект.

Последней операцией по организации взаимодействия с диалогом является назначение нашей струк­турной переменной tsb буфером обмена. Это делается с помощью предложения

TransferBuffer=&tsb;//Назначили tsb буфером обмена

где TransferBuffer - это защищенный член класса TWindow, который рассматривается OWL, как указа­тель на буфер обмена. Присвоив ему адрес нашей структурной переменной tsb, мы тем самым заставили OWL использовать tsb в качестве буфера обмена.

Если для диалогового окна определен буфер обмена, то при создании диалога его органам управле­ния автоматически будет передано исходное содержимое этого буфера. Включенный в конструктор диа­лога вызов функции memset() очищает буфер обмена, в результате чего при появлении на экране диалога его поля будут пустыми. С таким же успехом можно было назначить полям определенные значения, на­пример, для базы данных предприятия с преобладанием мужчин включить в конструктор диалога (после очистки буфера) предложение

tsb.mEdit=true;

а для предприятия с преобладанием женщин - предложение

tsb.mEdit=true;

Обмен данными с диалогом реализуется вызовом функции класса TWindow TransferData(), которая в качестве параметра требует указания одного из двух флагов - tdGetData в случае передачи данных из диалога в буфер обмена и tdSetData при передаче данных из буфера в диалог. В программе обмен данны­ми осуществляется в функции CmAdd() отклика на нажатие кнопки "Добавить". Прежде всего вызовом функции TransferData() данные из полей диалога передаются в буфер обмена tsb, затем функцией mem-move() данные копируются из буфера обмена в массив карточек с наращиванием индекса заполняемого элемента в этом массиве и, наконец, после очистки буфера его содержимое переносится в диалог, очищая поля диалога и облегчая тем самым ввод следующих данных. Если на этом функцию CmAdd() завер­шить, то хотя вводимые с клавиатуры данные будут накапливаться в массиве карточек tsbArray, на экра­не их видно не будет. Для того, чтобы каждая вводимая карточка сразу же отображалась в главном окне, надо вызвать функцию Invalidate() для этого окна. Однако мы, создавая объект главного окна в функции MyApp::InitMainWindow(), не позаботились оставить для будущих ссылок ни имя этого объекта, ни ука­затель на него, что лишило нас возможности вызывать для этого объекта какие-либо функции-члены. Придется, как мы это уже не раз делали, получить значение указателя динамически, для чего в классе TWindow предусмотрен соответствующий набор функций. В последнем предложении функции CmAdd()




Начало  Назад  Вперед