Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Нарисовать линию на форме / 6 сообщений из 6, страница 1 из 1
07.03.2006, 12:24:52
    #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
08.03.2006, 15:19:49
    #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
09.03.2006, 03:50:41
    #33588574
zzzzzzzzzzz
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нарисовать линию на форме
mihmihХочу нарисовать линию на форме с помощью LineTo и MoveToEx:
Но вот не нравится это FindWindow(...
можно ли как-то иначе получить хендл формы или контрола?
Почему не нравится? Вполне штатное средство для получения хендла. Есть конкретные проблемы?

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

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


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