Как изменить значение дефолтного свойства объекта? - VB
Формулировка задачи:
Требуется помощь.
Суть такова: имеется код на Visual Basic 6.0, динамически добавляющий на форму RichTextBox.
По умолчанию свойство RichTextBox' а Appearance равно 1 (rtfThreeD).
Но для добавляемого RichTextBox' а необходимо, чтобы это свойство было 0 (rtfFlat).
Если RichTextBox добавить на форму во время разработки, то у него можно изменить это свойство, однако в рун-тайме компилятор пишет, что свойство Appearance -
ReadOnly
. Как можно назначить другое дефолтное значение свойства для всех добавляемых контролов?Решение задачи: «Как изменить значение дефолтного свойства объекта?»
textual
Листинг программы
- Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
- Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
- Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
- Private Const WS_EX_CLIENTEDGE As Long = &H200&
- Private Const SWP_FRAMECHANGED As Long = &H20
- Private Const SWP_NOMOVE As Long = &H2
- Private Const SWP_NOSIZE As Long = &H1
- Private Const SWP_NOZORDER As Long = &H4
- Private Const GWL_EXSTYLE As Long = &HFFFFFFEC
- Private Const GWL_WNDPROC As Long = &HFFFFFFFC
- Private Sub cmdChange_Click()
- Dim prev As Long, os As Long
- os = GetWindowLong(rtb.hwnd, GWL_EXSTYLE) And WS_EX_CLIENTEDGE
- prev = SetWindowLong(rtb.hwnd, GWL_WNDPROC, AddressOf WndProc)
- SetWindowLong rtb.hwnd, GWL_EXSTYLE, Not os And WS_EX_CLIENTEDGE
- SetWindowLong rtb.hwnd, GWL_WNDPROC, prev
- SetWindowPos rtb.hwnd, 0, 0, 0, 0, 0, SWP_FRAMECHANGED Or SWP_NOMOVE Or SWP_NOSIZE Or SWP_NOZORDER
- End Sub
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д