Расположение пользовательской формы на экране - VBA

Узнай цену своей работы

Формулировка задачи:

Подскажите, пожалуйста. Почему данный код
открывает форму не в указанных координатах, а в более больших (примерно 265 / 570). Причем, если указать 0 / 0, то форма отобразится корректно в верхнем левом углу, а чем больше будут координаты, тем дальше(правее и ниже) от них уйдет форма. Единственная мысль, что эти свойства нужно указывать не в пикселях, а в чем то другом. В чем тогда? ps возможно, кому покажется это смешным, но эту проблему я гуглю-решаю уже часов так 5.

Решение задачи: «Расположение пользовательской формы на экране»

textual
Листинг программы
Private Declare Function GetDeviceCaps Lib "gdi32" (ByVal hDc As Long, ByVal nIndex As Long) As Long
Private Declare Function GetDC Lib "user32.dll" (ByVal hwnd As Long) As Long
Private Declare Function ReleaseDC Lib "user32" (ByVal hwnd As Long, ByVal hDc As Long) As Long
 
 
Private Const LOGPIXELSX = 88 ' Logical pixels/inch in X
Private Const LOGPIXELSY = 90 ' Logical pixels/inch in Y
 
Private Sub UserForm_Initialize()
Dim hDc As Long
Dim lngRetVal As Long
Dim varPixToInchX As Variant
Dim varPixToInchY As Variant
 
hDc = GetDC(0)
 
    varPixToInchX = GetDeviceCaps(hDc, LOGPIXELSX)
    varPixToInchY = GetDeviceCaps(hDc, LOGPIXELSY)
 
    Debug.Print varPixToInchX
    Debug.Print varPixToInchY
 
 
lngRetVal = ReleaseDC(0, hDc)
 
 
End Sub

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 3.4 из 5
Похожие ответы