Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Создание справочника Windows API

Страница: 1 |

 

  Вопрос: GetDeviceCaps Добавлено: 20.10.06 11:45  

Автор вопроса:  SergeyR
Размер экрана в мм, возвращаемый ф-цией GetDeviceCaps не совпадает
с реальным размером экрана (линейкой замерял).
Фун-ция возвращает 320x240, а реально 357x286.

 Код на VB:

Private Declare Function GetDeviceCaps Lib "gdi32" (ByVal hdc As Long, ByVal nIndex As Long) As Long
Private Declare Function GetDesktopWindow Lib "user32" () As Long
Private Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long

Private Sub Form_Load()
Dim hwnd As Long
Dim hdc As Long
Dim i As Long

hwnd = GetDesktopWindow
hdc = GetDC(hwnd)
i = GetDeviceCaps(hdc, 4) ' ширина в мм
i = GetDeviceCaps(hdc, 6) ' высота в мм

End Sub

Вопрос - почему?

Ответить

  Ответы Всего ответов: 10  

Номер ответа: 1
Автор ответа:
 SergeyR



Вопросов: 5
Ответов: 9
 Профиль | | #1 Добавлено: 20.10.06 11:52
Добавление к вопросу.
Монитор NEC MyltiSync LCD 1830
Драйвер установлен.

Ответить

Номер ответа: 2
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #2
Добавлено: 20.10.06 18:35
Вообще говоря, и не должен реальный размер возвращаться.

Ответить

Номер ответа: 3
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #3 Добавлено: 20.10.06 18:58
А дюймы монитора не учитываем? :)

Помойму на 15 дюймах совпадает 1 к 1, на глаз... линейкой по миллиметрам не проверял.

Ответить

Номер ответа: 4
Автор ответа:
 Ra$cal



ICQ: 8068014 

Вопросов: 18
Ответов: 817
 Web-сайт: www.rascalspb.narod.ru
 Профиль | | #4
Добавлено: 21.10.06 02:26
Sharp, это почему. Возвращаться должны размеры графического контекста устройства.
HORZSIZE Width, in millimeters, of the physical screen.
VERTSIZE Height, in millimeters, of the physical screen.
У меня всё ок. С линейкой проверял. Была необходимость. Если подождёте денёк-другой обрежу прогу до состояние демки.

Ответить

Номер ответа: 5
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #5 Добавлено: 21.10.06 20:43
2 Ra$cal, потому и не должны, что апишка никак не учитывает дюймы понимтора... Если у тебя совпадает, значит монитор у тебя скорее всего 15-ти дуюмовый...

Ответить

Номер ответа: 6
Автор ответа:
 Ra$cal



ICQ: 8068014 

Вопросов: 18
Ответов: 817
 Web-сайт: www.rascalspb.narod.ru
 Профиль | | #6
Добавлено: 21.10.06 21:18
Вот демка. Хотелось бы услышать результаты измерения линии линейкой. Должна быть 5 см плюс-минус 2 мм
http://ifolder.ru/313036

HACKER
Спасибо за посты. Каждый пост вызывает острый приступ смеха. Ты лучше петросяна!!!

Ответить

Номер ответа: 7
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #7 Добавлено: 21.10.06 22:13
Вот демка. Хотелось бы услышать результаты измерения линии линейкой. Должна быть 5 см плюс-минус 2 мм
http://ifolder.ru/313036

37mm
Samsung SyncMaster 710n
Разрешение родное, 1280х1024

Ответить

Номер ответа: 8
Автор ответа:
 Ra$cal



ICQ: 8068014 

Вопросов: 18
Ответов: 817
 Web-сайт: www.rascalspb.narod.ru
 Профиль | | #8
Добавлено: 21.10.06 22:24
Интересно... У меня на любых разрешениях 5 см. Ща покопаю параметры GetDeviceCaps

Ответить

Номер ответа: 9
Автор ответа:
 Ra$cal



ICQ: 8068014 

Вопросов: 18
Ответов: 817
 Web-сайт: www.rascalspb.narod.ru
 Профиль | | #9
Добавлено: 21.10.06 22:50
PixInInchX = GetDeviceCaps(dc, LOGPIXELSX);
PixInInchY = GetDeviceCaps(dc, LOGPIXELSY);
if (IsVert){
return (Cm / 2.57) * PixInInchX;
}
else{
return (Cm / 2.57) * PixInInchY;
}

Если сделать формулу такой, то длина соответствовала только при родном разрешении (1280Х1024, моник Samsung SyncMaster 174T). 800Х600 - размер 8 см

Ответить

Номер ответа: 10
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #10 Добавлено: 22.10.06 17:06
2 Ra$cal, да и тебе спасибо за понимание юмора... Но обрати внимание, практически в каждом моем посте, даже в том где есть юмор, помимо его, есть доля правды... :) Ну впрочем как и у Петросяна ;)

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам