Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Установка координат обьекта - SendMessageA / 12 сообщений из 12, страница 1 из 1
23.01.2007, 14:51
    #34275472
HOME_X
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Установка координат обьекта - SendMessageA
Hello ...............
Создан обьект, свойства Left,Rigth недоступны
set A = New ClassA
A.Left - отсутствуют

Чем правильно уставновить координаты, полагаю через SendMessageA
Но не знаю полного синтаксиса и типа
Подкиньте код или ссылку .....
Спасибо !
...
Рейтинг: 0 / 0
23.01.2007, 15:54
    #34275810
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Установка координат обьекта - SendMessageA
если ваш созданный объект имеет hwnd , то можете его явно спозиционировать с помощью функции SetWindowPos

Код: plaintext
Private Declare Sub 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)
...
Рейтинг: 0 / 0
23.01.2007, 18:26
    #34276382
HOME_X
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Установка координат обьекта - SendMessageA
Момент - но эта функция для работы с окнами ?????
Или это не имеет значения в моем случае тип обьекта - ProgressBar
...
Рейтинг: 0 / 0
23.01.2007, 18:40
    #34276433
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Установка координат обьекта - SendMessageA
ProgressBar это тоже окно.
...
Рейтинг: 0 / 0
23.01.2007, 21:26
    #34276732
HOME_X
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Установка координат обьекта - SendMessageA
Что не так делаю ??????????????
Указатель на обьект возвращет 0
B.hwnd = 0 - а что необходимо еще сделать ?

Private Type BarRect
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type

Private Const SWP_NOSIZE = &H1
Private Const SWP_NOZORDER = &H4
Private Const SWP_NOACTIVATE = &H10

Private Const SW_NORMAL = 1
Private Const SW_MINIMIZE = 2
Private Const SW_MAXIMIZE = 3
Private Const SW_SHOW = 9

Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
Private Declare Function GetActiveWindow Lib "user32" () As Long
Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
Private Declare Function SetParent Lib "user32" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long
Private Declare Function GetWindowRect Lib "user32" (ByVal hwnd As Long, lpRect As BarRect) 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 Sub Command1_Click()
Dim H As Long, R As BarRect, B As ProgressBar
H = GetActiveWindow
Call GetWindowRect(H, R)
Set B = New ProgressBar
MsgBox B.hwnd - здесь hwnd = 0
Call SetParent(B.hwnd, H)
Call SetWindowPos(B, 0, 5, 5, 50, 50, SWP_NOSIZE Or SWP_NOZORDER Or SWP_NOACTIVATE)
Call ShowWindow(B, SW_SHOW)
MsgBox Format(Hex(H), "00000000") & " " & R.Left & " " & R.Top & " " & R.Right & " " & R.Bottom
Set B = Nothing
End Sub
...
Рейтинг: 0 / 0
23.01.2007, 21:52
    #34276759
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Установка координат обьекта - SendMessageA
Если хочешь работать через WinAPI, то забудь про ProgressBar, если хочешь работать через ProgressBar, то нет смысла в WinAPI :)

Например, если есть окно или форма в терминах VB, и указатель на это окно записан в w, то можно вот так вот сделать на окне прогрессбар и прижать к нижнему краю...
Код: plaintext
1.
2.
3.
4.
5.
6.
        Dim b As ProgressBar
        w.Controls.Add(New ProgressBar)
        b = w.Controls(w.Controls.Count -  1 )
        b.Left = w.ClientRectangle.Width /  4 
        b.Top = w.ClientRectangle.Height - b.Height *  1 . 2 
        b.Width = w.ClientRectangle.Width /  2 
...
Рейтинг: 0 / 0
24.01.2007, 00:16
    #34276898
HOME_X
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Установка координат обьекта - SendMessageA
Конструкция Controls.Add(New ProgressBar) у меня не работает ?????

А такой синтаксис требует лицензии на обьект

Option Explicit
Private WithEvents btnObj As CommandButton
Private WithEvents cmdBar As ProgressBar
Private Sub btnObj_Click()
MsgBox "This is a dynamically added button."
End Sub
Private Sub Command1_Click()
Set btnObj = Controls.Add("VB.CommandButton", "btnObj")
btnObj.Visible = True
btnObj.Width = 2000
btnObj.Caption = "Hello"
btnObj.Top = 1000
btnObj.Left = 1000
MsgBox "Created " & Controls(1).Name
MsgBox "Create ProgressBar"
Licenses.Add "MSComctlLib.ProgCtrl.2", "????????????" - надо полагать здесь
Set cmdBar = Controls.Add("MSComctlLib.ProgCtrl.2", "cmdBar")
cmdBar.Visible = True
End Sub
...
Рейтинг: 0 / 0
24.01.2007, 03:26
    #34276994
Бенедикт
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Установка координат обьекта - SendMessageA
HOME_X,
если читать сообщения об ошибках, то, "что характерно" ((с) Леонид Ильич), всё получается. Первое сообщение говорит: лицензию добавлять не надо, уже есть. Второе сообщение говорит: уберите в опциях проекта галочку "Remove information about unused ActiveX Controls".
...
Рейтинг: 0 / 0
24.01.2007, 10:35
    #34277524
HOME_X
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Установка координат обьекта - SendMessageA
Факт - согласен ............
Смотрю в книгу видим .............EXCEL

Спасибо - дочитал ......
...
Рейтинг: 0 / 0
24.01.2007, 10:43
    #34277558
HOME_X
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Установка координат обьекта - SendMessageA
Остаеться внедрить созданный обьект в "OutLook".СommandBar
Сейчас попробую.............

Спасибо господа - буду учиться читать внимательно
...
Рейтинг: 0 / 0
24.01.2007, 18:21
    #34279980
HOME_X
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Установка координат обьекта - SendMessageA
Ну не все ..... так хорошо .....

Здесь получаеться несовместимость передаваемых типов
Добавление элемента к обьекту CommandBar предполагает набор
других типов ?
Controls.Add( Type, Id, Parameter, Before, Temporary )
CommndBars - это некий дочерный обьект,
.Add - его локальный метод (вряд-ли он унаследован от родителя)

А как выйти на родителя - у него наверняка будет классические параметры Add ??
Верно - нет ?

Private cmBars As CommandBar
Private WithEvents obPBar As ProgressBar

Private Sub btExes_Click(ByVal Ctrl As Office.CommandBarButton, CancelDefault As Boolean)
Set obPBar = cmBars.Controls.Add("MSComctlLib.ProgCtrl.2", "obPBar") - ошибка типов
obPBar.Left = 1
obPBar.Top = 1
obPBar.Height = 23
obPBar.Width = 120
obPBar.Visible = True
obPBar.Value = 50
End Sub
...
Рейтинг: 0 / 0
24.01.2007, 23:35
    #34280406
HOME_X
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Установка координат обьекта - SendMessageA
Господа никто не подскажет .... ?
Менять подход (обьект) ............?
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Установка координат обьекта - SendMessageA / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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