Как изменить значение дефолтного свойства объекта? - 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
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д