Страница: 1 |
ОЧЕНЬ нужно написать реакцию на событие WindowResize объекта Application. Так как в помощи - не получается, может кто знает, каким образом это еще сделать???
Извини, не понял. В общем и вцелом нужно написать реакцию на изменение размера окна ПРИЛОЖЕНИЯ (не книги!). или как вариант: запретить изменение/добавление пунктов системного меню. Если я правильно тебя понял, то. Private Sub UserForm_Resize() Насчёт меню. Может попробовать на событие Text1_MouseUp выдавать своё меню. Возможно оно перекроет системное. Это конечно если не в таблице. Спасибо за совет ), но это чичуть не то. Сорри я совсем нечетко выразился. Мне нужно было (теперь уже нет) отловить изменение размеров окна самого объекта Application. За это отвечает событие WindowResize. И его-то "отловить" и не получается. ...ну да я обошел эти все проблемы, хотя конечно не безболезненно Извини если дал ответ, который тебе не пригодился. Просто иногда пользователь сам не знает что он хочет Да, кстати, слово чичуть пишется чуть-чуть. Сегодня прошёлся по своим винтам. Нашёл много интересного. Советую тебе почаще навещать справочную систему. Может помочь. Надеюсь это то, что тебе поможет. Создай меню в редакторе меню. Caption Name Visible SubLevel(уровень подменю) Этот пример изменяет меню текстового поля на созданное тобой меню. Создай модуль Option Explicit Public Sub SetHook(hwnd, bSet As Boolean) Public Function AppWndProc(ByVal hwnd As Long, ByVal msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long Создай форму. На ней 1 текстовое поле и 3 кнопки. Private Sub Command1_Click() Private Sub Command2_Click() Private Sub Command3_Click() К сожалению я сам не до конца понял работу этого примера. Что такое "AddressOf" и почему при повторном нажатии кнопки "Hook" выскакивает сообщение "Нехватка места в стёке" и VB вылетает. Но ты же умный дядя, не будешь два раза подряд вызывать меню, не очишая его из памяти. Страница: 1 |
Вопрос: VBA (Excel)
Добавлено: 30.09.02 15:00
Автор вопроса: Alexa_SAS
Ответы
Всего ответов: 5
Номер ответа: 1
Автор ответа:
CyRax
Разработчик Offline Client
ICQ: 204447456
Вопросов: 180
Ответов: 4229
Web-сайт:
Профиль | | #1
Добавлено: 30.09.02 20:02
Номер ответа: 2
Автор ответа:
Alexa_SAS
Вопросов: 11
Ответов: 12
Профиль | | #2
Добавлено: 01.10.02 09:41
Номер ответа: 3
Автор ответа:
CyRax
Разработчик Offline Client
ICQ: 204447456
Вопросов: 180
Ответов: 4229
Web-сайт:
Профиль | | #3
Добавлено: 01.10.02 19:45
Me.Caption = "Размер формы изменён"
End Sub
Хотя я в UserFor стилей кроме None и FixedSingle не нашёл. Странно.
Номер ответа: 4
Автор ответа:
Alexa_SAS
Вопросов: 11
Ответов: 12
Профиль | | #4
Добавлено: 02.10.02 09:38
Номер ответа: 5
Автор ответа:
CyRax
Разработчик Offline Client
ICQ: 204447456
Вопросов: 180
Ответов: 4229
Web-сайт:
Профиль | | #5
Добавлено: 03.10.02 20:06
---------------------------------------
menu menu - 0(Главное меню)
help mnuhelp + 1
options mnuopt + 1
- sep0001 + 1
other mnuother + 1
prefs mnupref + 1
- sep0002 + 1
cancel mnucancel + 1
Public Const GWL_WNDPROC = (-4)
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 Const WM_CONTEXTMENU = &H7B
Public origWndProc As Long
If bSet Then
origWndProc = SetWindowLong(hwnd, GWL_WNDPROC, AddressOf AppWndProc)
ElseIf origWndProc Then
Dim lRet As Long
lRet = SetWindowLong(hwnd, GWL_WNDPROC, origWndProc)
End If
End Sub
Select Case msg
Case WM_CONTEXTMENU
Form1.PopupMenu Form1.menu, 1
AppWndProc = 0
Exit Function
End Select
AppWndProc = CallWindowProc(origWndProc, hwnd, msg, wParam, lParam)
End Function
Caption Name
-----------------------
Hook Command1
UnHook Command2
Exit Command3
Call SetHook(Text2.hwnd, True)
End Sub
Call SetHook(Text2.hwnd, False)
End Sub
Call SetHook(Text2.hwnd, False)
End
End Sub