Урок 10

Visual C++. ATL Урок 10. BSTR тип низ

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

За да присвоите стойност на BSTR низ, използвайте функцията SysAllocString API. Просто присвояване на типа

няма да работи - трябва да напишете нещо подобно

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

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

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

Сега добавете променлива за задържане на това свойство в класа CFirstATL. За да направите това, щракнете с десния бутон върху него и изберете Добавяне на членска променлива. В диалоговия прозорец, който се появява, задайте типа на променливата на BSTR и името на m_name. Изберете частен тип достъп:

Направете следните промени в методите get_MyName и put_MyName на класа CFirstATL (те са в интерфейса IFirstATL на този клас):

Също така направете промени в конструктора за нашия клас:

Сега компилирайте и преминете към тестовия проект за нашияActiveX. Имахме тестов проект на Visual Basic. За нашия ActiveX в него се появи ново свойство MyName:

Вярно е, че този имот все още не е запазен. Но точно това ще разгледаме в следващия урок.