Оригинальный DVD-ROM: eXeL@B DVD !
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 8 мая!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

ПРОГРАММИРОВАНИЕ НА C и С++



Давно заметил, что всё-таки языки С/C++ это не самый лучший вариант программирования под Windows. Сейчас появилась масса более современных и удобных языков, например тот же Python - кроссплатформенный язык, очень легок в изучение. Я его изучил буквально за несколько дней по этому курсу - ссылка. Автор постарался, там видеоуроки на удивление легкие и понятные.

Visual C++. ATL
Урок 10. Строковый тип BSTR

Технология COM не зависит от языка, так что используемые в ней типы отличны от используемых в других случаях. Так как строки по разному интерпретируются в других языках, то в COM используется свой строковый тип - BSTR (Basic STRing). Этот тип представляет из себя строку, в начале которой указана ее длина. Таким образом каждая строка с COM знает свою длину и завершающего нуль-символа в конце строки не требуется.

Для присваивания некоторого значения строке типа BSTR используется API-функция SysAllocString. Простое присваивание типа

BSTR str="Some string" //Неправильно!

не пройдет - вы должны писать что-то вроде

BSTR str=SysAllocString(L"Some string&quot); //Правильно

Сейчас мы рассмотрим работу со строками практически - а именно добавим свойство строкового типа для элемента ActiveX, который мы с вами делали на прошлых занятиях. Откройте этот проект, если он у вас еще не открыт.

Сначала добавим свойство в интерфейс IFirstATL (через правую кнопку мыши). Только не перепутайте - из двух одноименных интерфейсов надо брать внешний, а не интерфейс класса. В появившемся диалоговом окне тип для нового свойства задайте как BSTR, а имя - как MyName:

Добавление свойства

Нажмите OK. В интерфейсе появится два свойства MyName - для записи и для чтения.

Теперь добавьте переменную для хранения этого свойства в класс CFirstATL. Для сего щелкаем на нем правой кнопкой мыши и выбираем Add Member Variable. В появившемся диалоговом окне задайте тип переменной как BSTR, а имя - как m_name. Тип доступа выберите private:

Добавление переменной в класс

Внесите следующие изменения для методов get_MyName и put_MyName класса CFirstATL (они находятся в интерфейсе IFirstATL этого класса):

STDMETHODIMP CFirstATL::get_MyName(BSTR *pVal)
 
 {
 
     // TODO: Add your implementation code here
 
     *pVal=SysAllocString(m_name);
 
     return S_OK;
 
 }
 
 
 
 STDMETHODIMP CFirstATL::put_MyName(BSTR newVal)
 
 {
 
     // TODO: Add your implementation code here
 
     m_name=SysAllocString(newVal);
 
     return S_OK;
 
 }

Также внесите изменения в конструктор для нашего класса:

    ...
 
     CFirstATL()
 
     {
 
         m_num=0;
 
         m_name=SysAllocString(L"");
 
     }
 
 

Теперь компилируйте и переключайтесь на тестовый проект для нашего ActiveX. У нас был тестовый проект на Visual Basic. Для нашего ActiveX в нем появилось новое свойство MyName:

Свойство MyName

Правда, свойство это по-прежнему не сохраняется. Но вот это как раз мы и рассмотрим в следующем уроке.



<< ВЕРНУТЬСЯ В ПОДРАЗДЕЛ

<< ВЕРНУТЬСЯ В ОГЛАВЛЕНИЕ




Материалы находятся на сайте https://exelab.ru/pro/



Оригинальный DVD-ROM: eXeL@B DVD !


Вы находитесь на EXELAB.rU
Проект ReactOS