powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Разрешение экрана
3 сообщений из 3, страница 1 из 1
Разрешение экрана
    #35453394
Max555
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем здравствуйте, я в своей программе меняю разрешение экрана при входе таким кодом (хотя сам его не до конца понимаю):
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
Private Declare Function ChangeDisplaySettings Lib "user32" _ 
    Alias "ChangeDisplaySettingsA" _ 
    (lpDevMode As Any, ByVal dwflags As Long) As Long 
Private Declare Function EnumDisplaySettings Lib "user32" _ 
    Alias "EnumDisplaySettingsA" _ 
    (ByVal lpszDeviceName As Long, _ 
    ByVal iModeNum As Long, lpDevMode As Any) As Boolean 
Const DM_PELSWIDTH = &H80000 
Const DM_PELSHEIGHT = &H100000 
Const CCFORMNAME =  32  
Const CCDEVICENAME =  32  
  
Private Type DEVMODE 
    dmDeviceName As String * CCDEVICENAME 
    dmSpecVersion As Integer 
    dmDriverVersion As Integer 
    dmSize As Integer 
    dmDriverExtra As Integer 
    dmFields As Long 
    dmOrientation As Integer 
    dmPaperSize As Integer 
    dmPaperLength As Integer 
    dmPaperWidth As Integer 
    dmScale As Integer 
    dmCopies As Integer 
    dmDefaultSource As Integer 
    dmPrintQuality As Integer 
    dmColor As Integer 
    dmDuplex As Integer 
    dmYResolution As Integer 
    dmTTOption As Integer 
    dmCollate As Integer 
    dmFormName As String * CCFORMNAME 
    dmUnusedPadding As Integer 
    dmBitsPerPel As Integer 
    dmPelsWidth As Long 
    dmPelsHeight As Long 
    dmDisplayFlags As Long 
    dmDisplayFrequency As Long 
End Type 
  
Private Sub ChangeResolution(iWidth As Single, iHeight As Single) 
Dim DevM As DEVMODE 
Dim a As Boolean 
Dim i As Long 
Dim b As Long 
i =  0  
Do 
    a = EnumDisplaySettings( 0 &, i&, DevM) 
    i = i +  1  
Loop Until (a = False) 
DevM.dmFields = DM_PELSWIDTH Or DM_PELSHEIGHT 
DevM.dmPelsWidth = iWidth 
DevM.dmPelsHeight = iHeight 
b = ChangeDisplaySettings(DevM,  0 ) 
End Sub 

Private Sub Command1_Click()
ChangeResolution  640 ,  480 
End sub 

Private Sub Command2_Click()
ChangeResolution  800 ,  600 
End sub 

Private Sub Command3_Click()
ChangeResolution  1024 ,  768 
End sub 

Private Sub Command4_Click()
ChangeResolution  1280 ,  1024 
End sub 
Тут у меня всё работает, а вот как при выходе установить такое разрешение, какое было перед входом в программу не знаю как, пробовал присвоить высоту и длинну экрана переменным и таким образом изменить разрешение на старое - не работает, может кто подскажет? :-)
...
Рейтинг: 0 / 0
Разрешение экрана
    #35454490
Ashton_Guest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Немного не понятно. Что мешает перед изменением разрешения сохранять исходные настройки а потом восстанавливать.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
Private Type RECT
   x1 As Long
   y1 As Long
   x2 As Long
   y2 As Long
End Type

Private Declare Function GetDesktopWindow Lib "User32" () As Long

Private Declare Function GetWindowRect Lib "User32" ( _
  ByVal hWnd As Long, _
  rectangle As RECT) As Long

Public Function fnGetScreenResolution() As String
   Dim R As RECT
   Dim hWnd As Long
   Dim RetVal As Long
   
   hWnd = GetDesktopWindow()
   RetVal = GetWindowRect(hWnd, R)
   fnGetScreenResolution = (R.x2 - R.x1) & "x" & (R.y2 - R.y1)
End Function
...
Рейтинг: 0 / 0
Разрешение экрана
    #35456489
Max555
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Оп-па работает, спасибо! :)
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Разрешение экрана
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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