|
Вопрос # 807/ вопрос решён / |
|
Здравствуйте, подскажите, пожалуйста, можно ли изменять разрешение экрана монитора во время работы программы?
 |
Вопрос задала: Тамара (статус: Посетитель)
Вопрос отправлен: 30 июля 2007, 19:40
Состояние вопроса: решён, ответов: 3.
|
Ответ #1. Отвечает эксперт: Djec
Здравствуйте, Тамара!
Изменить разрешение можно, использовав следующую процедуру:
procedure Display( X, Y : Word );
var
dm : TDEVMODE;
begin
ZeroMemory( @dm, sizeof( TDEVMODE ) );
dm.dmSize := sizeof ( TDEVMODE );
dm.dmPelsWidth := X;
dm.dmPelsHeight := Y;
dm.dmFields := DM_PELSWIDTH or DM_PELSHEIGHT;
ChangeDisplaySettings( dm, 0 );
end;
 |
Ответ отправил: Djec (статус: 1-ый класс)
Время отправки: 30 июля 2007, 20:13
Оценка за ответ: 5
|
Ответ #2. Отвечает эксперт: Градов Ю.М.
Здравствуйте, Тамара!
Посмотрите листинг в приложении.
Приложение: Переключить в обычный режим- procedure SetScreen(BPP: byte; width, height, FR: integer);
- var
- D: TDevMode;
- h: HWND;
- begin
- h:=0;
- D.dmDeviceName:='DISPLAY';
- D.dmBitsPerPel:=BPP;
- D.dmDisplayFrequency:=FR;
- D.dmPelsWidth:=Width;
- D.dmPelsHeight:=Height;
- D.dmFields:=DM_BITSPERPEL+DM_PELSWIDTH+DM_PELSHEIGHT+DM_DISPLAYFREQUENCY;
- D.dmSize:=SizeOf(D);
- if ChangeDisplaySettings(D,CDS_TEST)=DISP_CHANGE_SUCCESSFUL then
- ChangeDisplaySettings(D,CDS_UPDATEREGISTRY)
- else
-
-
- end;
-
-
-
-
-
-
-
 |
Ответ отправил: Градов Ю.М. (статус: 8-ой класс)
Время отправки: 30 июля 2007, 20:49
Оценка за ответ: 5
|
Ответ #3. Отвечает эксперт: Feniks
Здравствуйте, Тамара!
Можно.
Смотрим приложения...
Приложение: Переключить в обычный режим-
-
- procedure TForm1.Button1Click(Sender: TObject);
- var
- d: _devicemodeA;
- i: integer;
- begin
- i:=0;
- while EnumDisplaySettings(nil,i,d)<>false do
- begin
- ListBox1.Items.Add('Mode: '+IntToStr(i+1)+' -
'+FloatToStr(D.dmPelsWidth)+'x'+FloatToStr(D.dmPelsHeight)+'x'+FloatToStr(D.dmBitsPerPel)+' -
'+FloatToStr(D.dmDisplayFrequency)+' Hz');
- inc(i,1);
- end;
- end;
-
- procedure TForm1.Button2Click(Sender: TObject);
- var
- d: _devicemodeA;
- begin
- EnumDisplaySettings(nil, ListBox1.ItemIndex, D);
- ChangeDisplaySettings(D, CDS_UPDATEREGISTRY);
- end;
-
- =======================================================
-
-
-
- procedure ChangeDisplayResolution(x, y : word);
- var
- dm : TDEVMODE;
- begin
- ZeroMemory(@dm, sizeof(TDEVMODE));
- dm.dmSize := sizeof(TDEVMODE);
- dm.dmPelsWidth := x;
- dm.dmPelsHeight := y;
- dm.dmFields := DM_DISPLAYFLAGS;
- ChangeDisplaySettings(dm, 0);
- end;
 |
Ответ отправил: Feniks (статус: Бакалавр)
Время отправки: 2 августа 2007, 12:37
Оценка за ответ: 5
|
Мини-форум вопроса
Всего сообщений: 0.
31 января 2011, 19:23: Статус вопроса изменён на решённый (изменил модератор Ерёмин А.А.): Автоматическая обработка (2 и более ответов с оценкой 5)
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|