powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Нарисовать линию на форме
6 сообщений из 6, страница 1 из 1
Нарисовать линию на форме
    #33586479
mihmih
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хочу нарисовать линию на форме с помощью LineTo и MoveToEx:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Private Declare Function GetDCEx Lib "user32" ...
Private Declare Function ReleaseDC Lib "user32"...
Private Declare Function MoveToEx Lib "gdi32" ...
Private Declare Function LineTo Lib "gdi32" ...
Private Declare Function FindWindowEx Lib "user32"...

w = FindWindow("ThunderDFrame", UserForm1.Caption)
fhdc = GetDCEx(w,  0 , DCX_CACHE Or DCX_CLIPSIBLINGS Or DCX_LOCKWINDOWUPDATE)
MoveToEx fhdc,  10 ,  10 , p
LineTo fhdc,  150 ,  150 
Но вот не нравится это FindWindow(...
можно ли как-то иначе получить хендл формы или контрола?
...
Рейтинг: 0 / 0
Нарисовать линию на форме
    #33588197
А чем тебе функция FindWindow не угадила? Можно конечно попробовать еще функцию GetActiveWindow.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
Private Declare Function FindWindow Lib "user32" _
  Alias "FindWindowA" ( _
  ByVal lpClassName As String, _
  ByVal lpWindowName As String) As Long
  
Private Declare Function GetActiveWindow Lib "user32" () As Long

Sub GetFormHandle()
    Dim hwnd As Long
    Dim hwnd2 As Long

    UserForm1.Show False
    
    hwnd = FindWindow("ThunderDFrame", UserForm1.Caption)
    hwnd2 = GetActiveWindow
    
    MsgBox hwnd
    MsgBox hwnd2
End Sub
...
Рейтинг: 0 / 0
Нарисовать линию на форме
    #33588574
zzzzzzzzzzz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mihmihХочу нарисовать линию на форме с помощью LineTo и MoveToEx:
Но вот не нравится это FindWindow(...
можно ли как-то иначе получить хендл формы или контрола?
Почему не нравится? Вполне штатное средство для получения хендла. Есть конкретные проблемы?

"как-то иначе получить хендл формы или контрола" - а в чем пишем? В Access, например, у форм есть свойство Hwnd.

ЗЫ По варианту Пользователя2 - интересно, что произойдет в случае, если во время вызова GetActiveWindow вылезет какое-нибудь постороннее окно (напоминалка Outlook, например)? Ну или шустрый пользователь успеет нажать Alt-tab во время рисования линий...
...
Рейтинг: 0 / 0
Нарисовать линию на форме
    #33588655
zzzzzzzzzzzЗЫ По варианту Пользователя2 - интересно, что произойдет в случае, если во время вызова GetActiveWindow вылезет какое-нибудь постороннее окно (напоминалка Outlook, например)? Ну или шустрый пользователь успеет нажать Alt-tab во время рисования линий...
Согласен. Но это уже другой вопрос.
...
Рейтинг: 0 / 0
Нарисовать линию на форме
    #33590357
mihmih
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пишем в Excel, хотелось бы рисовать не на форме а на Picture - вот ее то хендл потучить и представляется затруднительным.
...
Рейтинг: 0 / 0
Нарисовать линию на форме
    #33590451
Andres 1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mihmihПишем в Excel, хотелось бы рисовать не на форме а на Picture - вот ее то хендл потучить и представляется затруднительным.
Может быть так, что у него вообще нет hwnd - т.е. Picture - не отдельное окно. Нужно посмотреть чем-нибудь вроде Winspector или spy++
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Нарисовать линию на форме
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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