powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как добавить событие в конторол?
5 сообщений из 5, страница 1 из 1
Как добавить событие в конторол?
    #36400560
TpaBka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Использую Microsoft Masked Edit Control 6.0. У него нет стандартных событий для мыши: Click , DblClick и т.д. Как их можно туда добавить или дайте ссылку на нормальный textbox с маской ввода для даты.
Спасибо
...
Рейтинг: 0 / 0
Как добавить событие в конторол?
    #36400933
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TpaBka,

По идее, можно сабклассингом, то есть перехватить сообщения, посылаемые виндами окну контрола. Посмотрите примеры по сабклассингу прямо в этой ветке.
...
Рейтинг: 0 / 0
Как добавить событие в конторол?
    #36403014
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: TpaBka
> или дайте ссылку на нормальный textbox с маской ввода для даты.

А что DTPicker из Object BrowserLibrary MSComCtl2
C:\WINDOWS\system32\mscomct2.oca
Microsoft Windows Common Controls-2 6.0 (SP6) уже отменили?

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Как добавить событие в конторол?
    #36404916
TpaBka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь ГорбоносА что DTPicker из Object Browser
Library MSComCtl2
C:\WINDOWS\system32\mscomct2.oca
Microsoft Windows Common Controls-2 6.0 (SP6)
уже отменили?
Спасибо
...
Рейтинг: 0 / 0
Как добавить событие в конторол?
    #36439104
TpaBka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не DTPicker не подошел :(
Решил воспользоваться советом по сабклассингу и так:
Создал модуль:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
Option Explicit
'Определим объекты которые вазываяют подмену события
Public Frm As Form
Public MaskEdBoxCtr As MaskEdBox

'Определим необходимые константы
Const GWL_WNDPROC = - 4 &
Const WM_LBUTTONDBLCLK = &H203

'Объявления API-функций
Declare Function SetWindowLong Lib "user32" _
Alias "SetWindowLongA" (ByVal hwnd As Long, _
ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Declare Function CallWindowProc Lib "user32" _
Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, _
ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, _
ByVal lParam As Long) As Long

'Эта процедура заменит стандартную оконную
'процедуру на пользовательскую
Public Sub SetWndProc()
 Frm.hPrevWndProc = _
 SetWindowLong(MaskEdBoxCtr.hwnd, _
 GWL_WNDPROC, AddressOf WindowProc)
End Sub

'Пользовательская оконная процедура
Public Function WindowProc(ByVal hwnd As Long, _
 ByVal iMsg As Long, _
 ByVal wParam As Long, _
 ByVal lParam As Long) As Long
 Select Case iMsg
    Case WM_LBUTTONDBLCLK
    If MaskEdBoxCtr = "__.__.____" Then
    MaskEdBoxCtrl = Date
    Else
    MaskEdBoxCtr = "__.__.____"
    End If
 End Select

 'вызов оконной процедуры по умолчанию
 WindowProc = CallWindowProc( _
 Frm.hPrevWndProc, MaskEdBoxCtr.hwnd, _
 iMsg, wParam, lParam)
End Function

В форме:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
Option Explicit

Private m_hPrevWndProc As Long

'Свойство, содержащее адрес оконной процедуры по умолчанию
Public Property Get hPrevWndProc() As Long
 hPrevWndProc = m_hPrevWndProc
End Property

Public Property Let hPrevWndProc(Value As Long)
 m_hPrevWndProc = Value
End Property

Private Sub MaskEdBox1_GotFocus()
Set Frm = Me
Set MaskEdBoxCtr = Me.ActiveControl
SetWndProc
End Sub

В итоге после запуска VB закрывается.
Если код переписать для подмены события окна формы, то работает я же хочу для конкретного контрола.
Чувствую, что проблема в Property Get hPrevWndProc а может и нет.
Кто ни будь помогите пожалуйста
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как добавить событие в конторол?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]