Как изменять параметры доступные в Design-time

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Jack Ferre
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 132
Зарегистрирован: 17.02.2014 (Пн) 14:31
Откуда: Казахстан, Костанай

Как изменять параметры доступные в Design-time

Сообщение Jack Ferre » 01.06.2015 (Пн) 8:16

Был опыт изменения вышеуказанных параметров в процессе ручного создания контрола. Сразу после CreateInstance их можно было изменять, а после создание окна контрола они становились readonly.

Решил сделать так же с RichTextBox. Но он напрочь отказывается - говорит "readony". Но куда раньше то...
Конкретно интересуют параметры Appearance и ScrollBars. Первый изменяется со стилем окна, изменение второго не получается.

Помню где-то видел функции создание контрола вроде СоздатьКонтрол(......, ПараметрыИнициализации as IStream).

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Как изменять параметры доступные в Design-time

Сообщение Хакер » 01.06.2015 (Пн) 8:19

Jack Ferre писал(а):Решил сделать так же с RichTextBox.

Так а как именно контрол создаётся?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Jack Ferre
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 132
Зарегистрирован: 17.02.2014 (Пн) 14:31
Откуда: Казахстан, Костанай

Re: Как изменять параметры доступные в Design-time

Сообщение Jack Ferre » 01.06.2015 (Пн) 9:03

Хакер писал(а):Так а как именно контрол создаётся?

AtlAxAttachControl

Давненько разбирал данную тему. Сейчас что-то навеяло запостить.
Полез в MSDN, заметил рядом с AtlAxAttachControl функцию AtlAxCreateControl. У неё как раз есть параметр pStream.
MSDN писал(а):A pointer to a stream that is used to initialize the properties of the control.

Это то что нужно? Если да, то из чего создавать стрим?

Jack Ferre
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 132
Зарегистрирован: 17.02.2014 (Пн) 14:31
Откуда: Казахстан, Костанай

Re: Как изменять параметры доступные в Design-time

Сообщение Jack Ferre » 01.06.2015 (Пн) 14:09

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

Код с пустым pStream
Код: Выделить всё
Option Explicit

'#ref richtx32.ocx

Private Declare Function AtlAxWinInit Lib "atl.dll" () As Long
Private Declare Function AtlAxCreateControlEx Lib "atl.dll" (ByVal lpszName As Long, ByVal hWnd As Long, ByVal pStream As IUnknown, ppUnkContainer As IUnknown, ppUnkControl As IUnknown, ByVal iidSink As Long, Optional ByVal punkSink As IUnknown) As Long

Private Const GUID_RICHTEXT = "{3B7C8860-D78F-101B-B9B5-04021C009402}"

Private Type GUID: Data(3) As Long: End Type

'   ...
Dim rtbTest As RichTextBox



Private Sub Form_Load()
    Set rtbTest = RTB_Add(boxTest.hWnd)
    rtbTest.Text = "Hello world!"
End Sub

Private Function RTB_Add(ByVal hWnd As Long) As RichTextBox
    Dim guidNull As GUID
   
    Call AtlAxWinInit
    Call AtlAxCreateControlEx(StrPtr(GUID_RICHTEXT), hWnd, Nothing, Nothing, RTB_Add, VarPtr(guidNull), Nothing)
End Function


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 12

    TopList