Гость
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Прикрепить форму / 4 сообщений из 4, страница 1 из 1
28.04.2003, 13:19
    #32150068
SashaT
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прикрепить форму
Здравствуйте!
Подскажите пожалуйста как сделать так, чтобы моя форма на VB (например Form1.exe) подвешивалась к программе Word или к-л другой программе (например к нижнему правому углу) и соответственно при любых перемещениях окна Word форма тоже должна перемещаться.
Спасибо.
...
Рейтинг: 0 / 0
28.04.2003, 13:38
    #32150097
Senin Viktor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прикрепить форму
Готовый код не дам ибо такими проблемами не был обременен.
Тебе прийдется использовать Win32 API для поиска hwnd нужного тебе окна (самого Word или конкретного окна документа), далее отслеживать по таймеру или через те же API место расположения границ окна и перемещать свою форму куда нужно.
На сайтах по VB есть куча примеров для работы с окнами и границами. Объединишь - получишь что тебе нужно.
...
Рейтинг: 0 / 0
05.05.2003, 09:56
    #32153013
SashaT
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прикрепить форму
Спасибо конечно, но что то у меня всё равно ничего не получается.

Я просмотрел несколько сайтов и единственное что мне удалось это прикрепить одну форму к другой, но прикрепить форму к Word-у не удалось!!!
Form1 к form2 я прикрепил следующим образом:

Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Public 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_MOVE = &H3
Public Const GWL_WNDPROC = -4
Public glPrevWndProc As Long

Public Function pMyWindowProc(ByVal hw As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
If uMsg = WM_MOVE And Form1.WindowState = vbNormal Then
Form2.Move Form1.Left - 1000, Form1.Top - 2500
End If
pMyWindowProc = CallWindowProc(glPrevWndProc, hw, uMsg, wParam, lParam)
End Function

Private Sub Form_Load()
Form2.Show
Form1.Show
glPrevWndProc = SetWindowLong(Form1.hWnd, GWL_WNDPROC, AddressOf pMyWindowProc)
End Sub

Но мне то нужно форму прикрепить не к другой форме, а Word-у!!!

Затем я нашел hwnd окна Word следующим способом:
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Dim FFF As Long

FFF = FindWindow(OpusApp, vbNullString)

А ввиду того что VB я владею далеко не в совершенстве, то на этом у меня всё заглохло!!!


Подскажите что делать дальше (а лучше пришлите код, если не трудно).
HELP Me Please!!!
...
Рейтинг: 0 / 0
05.05.2003, 10:47
    #32153070
Senin Viktor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прикрепить форму
Окно Ворда ты нашел (FFF = FindWindow(OpusApp, vbNullString) ), теперь ищи API функцию, котрая возвращет информацию об этм окне (место расположения, щирина, высота...) Делай соответсвующие выводы/расчеты и перемещай свою форму куда нужно.
Твой первый приведенный пример принимет в качестве парaметра hwnd формы, так и передай hwnd Ворда - FFF).
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Прикрепить форму / 4 сообщений из 4, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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