Помогите разобраться с координатами формы!!!!!!!

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
MiGan
Обычный пользователь
Обычный пользователь
 
Сообщения: 60
Зарегистрирован: 02.05.2005 (Пн) 13:27

Помогите разобраться с координатами формы!!!!!!!

Сообщение MiGan » 22.06.2005 (Ср) 11:45

Ранее я уже постил топик с вопросом о том, как прикрепить дочернее окно к к-либо элементу, имеющему хэндлер (напр., Picturebox).
Теперь другая проблема - как провильно проставить координаты для прикрепленного окна, чтобы, например, в пресловутом pictureboxе оно размещалось в точке начала этого пикчурбокса. Почему-то, когда я задаю свойства для прикрепленной формы .left = 0, то координата x формы действительно становится равной координате родит. окна, а когда ставлю .top=0, то форма куда-то слезает в ж..у! попытки налету отследить изменения координат вообще привели меня в недоумение... Что же есть точка начала отсчета - экран Win или родит. объект?????
Вот кусочек кода:

Код: Выделить всё

   SetParent frmSpec_Admiss.hWnd, Pic9.hWnd
   frmSpec_Admiss.Top = 2055
   frmSpec_Admiss.Left = 0
   frmSpec_Admiss.Show


SetParent - стандартный Api из user32.dll
Что ж мне делать-то?????

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 22.06.2005 (Ср) 11:53

потому что тебе надо стиль CHILD выставить у твоего окна через SetWindowLong с использованием GWL_STYLE, которому ты SetParent сделал

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 22.06.2005 (Ср) 12:01

Код: Выделить всё
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" _
    (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" _
    (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Private Const GWL_STYLE = (-16)
Private Const WS_CHILD = &H40000000

Private Sub Command1_Click()
    ' set the WS_CHILD bit
    SetWindowLong Me.hwnd, GWL_STYLE, GetWindowLong(Me.hwnd, _
        GWL_STYLE) Or WS_CHILD
End Sub

Kovu
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 924
Зарегистрирован: 29.04.2005 (Пт) 17:38

Сообщение Kovu » 22.06.2005 (Ср) 13:38

И ещё координаты в системе измеряются в пикселях, а у кого ты видел экран с разрешением х*2055 :shock: :shock: :shock:
Если всё делать своими ручками, они скоро отвалятся !

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 22.06.2005 (Ср) 13:41

Координаты в данном случае в твипах, всё в порядке.

Igor_123
Осторожный Баянист
Осторожный Баянист
Аватара пользователя
 
Сообщения: 1325
Зарегистрирован: 21.07.2004 (Ср) 13:00
Откуда: Днепропетровск

Сообщение Igor_123 » 22.06.2005 (Ср) 15:08

Я, например, видел у друга на 24'' монике. Какое разрешение было не помню, но на карточке АТИ было максимум, которое возможно, при частоте порядка 100 Гц.

Ощущение УУууххх! монитор сразу взглядом не охватываешь. Приходиться головой вертеть, что-бы посмотреть, что твориться в другом конце экрана :D
Водки я вам не обещаю, но погуляем хорошо.
И. Сусанин.

Аватара (с) Тёмыч


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 101

    TopList