Проблема с screen.width

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

Проблема с screen.width

Сообщение Tompson » 07.12.2007 (Пт) 20:45

Всем доброго времени суток.

Имеется форма, которая должна торчать в правом нижнем углу экрана
На ней есть таймер, в котором обновляется содержимое формы, заодно и положение и размеры формы

Код: Выделить всё
Form1.Height = 200 * (cr + 1)
Form1.Top = Screen.Height - 330 * (cr + 1) - 500
Form1.Left = Screen.Width - Form1.Width


scalemode = 1-twip
проблема вот в чём: программа нормально работает, до того момента, как я запускаю какуюнибудь игруху с разрешением меньше чем разрешение рабочего стола. Форма оказывается в середине экрана, как будто разрешение экрана такое, как было в игре. причём перезапуск проги ничего не даёт.

Cytron
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 266
Зарегистрирован: 15.02.2007 (Чт) 21:09

Сообщение Cytron » 08.12.2007 (Сб) 2:53

Узнавай размеры экрана заново через API.

Tompson
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 21.06.2006 (Ср) 15:48

Сообщение Tompson » 08.12.2007 (Сб) 13:44

с API тоже проблема...

юзал GetSystemMetrics, так она что ширину что высоту экрана возвращает 1280, когда надо 1280х1024 :(

есть ещё какиенибудь апи, чтобы разрешение глянуть?

EUGY
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 214
Зарегистрирован: 09.11.2006 (Чт) 22:51
Откуда: Мурманск

Сообщение EUGY » 08.12.2007 (Сб) 14:32

так она что ширину что высоту экрана возвращает 1280


Могу себе представить, как ты ее вызывал :)

Код: Выделить всё
Option Explicit
Private Type RECT
        Left As Long
        Top As Long
        Right As Long
        Bottom As Long
End Type
Private Declare Function SystemParametersInfo Lib "user32" Alias "SystemParametersInfoA" (ByVal uAction As Long, ByVal uParam As Long, ByRef lpvParam As Any, ByVal fuWinIni As Long) As Long
Private Declare Function GetSystemMetrics Lib "user32" (ByVal nIndex As Long) As Long
Private Const SPI_GETWORKAREA = 48
Private Const SM_CXSCREEN = 0
Private Const SM_CYSCREEN = 1
Private Sub Form_Load()
   Dim rc As RECT
   Dim w As Long, h As Long
   w = GetSystemMetrics(SM_CXSCREEN)
   h = GetSystemMetrics(SM_CYSCREEN)
   Call SystemParametersInfo(SPI_GETWORKAREA, 0, rc, 0)
   MsgBox "рабочая зона" & rc.Right - rc.Left & " x " & rc.Bottom - rc.Top & vbCrLf _
    & "разрешение " & w & " x " & h
End Sub
[/quote]

Tompson
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 21.06.2006 (Ср) 15:48

Сообщение Tompson » 08.12.2007 (Сб) 15:32

О_о жесть

спасибо большое:)


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

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

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

    TopList