Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.11.2009, 18:16   #1
Gapro
Форумчанин
 
Регистрация: 30.07.2009
Сообщений: 256
Вопрос Изменение разрешения

Код:
program Project1;

uses
  Windows,
  Messages,
  SysUtils;

Var StartBtnWnd: hWnd;
     S: TDevMode;

{$R *.res}

begin
// Разрешение
S.dmPelsWidth:=800;
S.dmPelsHeight:=600;
S.dmFields:=DM_PELSWIDTH or DM_PELSHEIGHT;
ChangeDisplaySettings(s,0);

// Панель задач
StartBtnWnd:=FindWindow('Shell_TrayWnd', nil);
EnableWindow(StartBtnWnd, false);
ShowWindow(StartBtnWnd, SW_HIDE);
end.
После первого комментария 4 строки отвечают за смену разрешения на 800х600, но разрешение не меняется, хотя программа нормально компилируется и запускается. В другой програмке эта чать кода прекрасно работает. Не могли бы вы указать на ошибку?
Gapro вне форума Ответить с цитированием
Старый 10.11.2009, 18:20   #2
Вадим Буренков
Участник клуба
 
Аватар для Вадим Буренков
 
Регистрация: 06.03.2009
Сообщений: 1,346
По умолчанию

Вот рабочая функция:
Код:
function SetDisplayMode(Scr_X:integer;Scr_Y:integer;Frequency:byte;ColorQ:byte):Boolean; 
var
  DeviceMode : TDevMode;
begin
  with DeviceMode do
  begin
    dmSize:=SizeOf(DeviceMode);
    dmBitsPerPel:=ColorQ;
    dmPelsWidth:=Scr_X;
    dmPelsHeight:=Scr_Y;
    dmDisplayFrequency:=Frequency;
    dmFields:=DM_BITSPERPEL or DM_PELSWIDTH or DM_PELSHEIGHT or DM_DISPLAYFREQUENCY;
    result:=False;
    if ChangeDisplaySettings(DeviceMode,CDS_TEST or CDS_FULLSCREEN) <> DISP_CHANGE_SUCCESSFUL
    then Exit;
    Result:=ChangeDisplaySettings(DeviceMode,CDS_FULLSCREEN) = DISP_CHANGE_SUCCESSFUL;
  end;
end;
В ней помимо разрешения есть цветопередача и скорость обновления экрана. Возвращает удачно ли произошла смена разрешения.
Вадим Буренков вне форума Ответить с цитированием
Старый 10.11.2009, 18:32   #3
Gapro
Форумчанин
 
Регистрация: 30.07.2009
Сообщений: 256
По умолчанию

Преобразовал эту функцию к равносильному коду -
Код:
DM.dmSize:=SizeOf(DM);
    DM.dmPelsWidth:=600;
    DM.dmPelsHeight:=800;
    DM.dmFields:=DM_PELSWIDTH or DM_PELSHEIGHT;
    ChangeDisplaySettings(DM,0);
Но не помогло

Сделал вот так и все заработало)

Код:
S.dmSize:=SizeOf(S);
S.dmPelsWidth:=800;
S.dmPelsHeight:=600;
S.dmFields:=DM_PELSWIDTH or DM_PELSHEIGHT;
ChangeDisplaySettings(S,0);

Последний раз редактировалось mihali4; 10.11.2009 в 19:38.
Gapro вне форума Ответить с цитированием
Старый 10.11.2009, 19:41   #4
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

То Gapro
Когда научитесь пользоваться кнопкой "Правка"?
Для ускорения процесса обучения - штраф.
mihali4 вне форума Ответить с цитированием
Старый 10.11.2009, 20:39   #5
TwiX
Участник клуба
 
Аватар для TwiX
 
Регистрация: 28.07.2009
Сообщений: 1,510
По умолчанию

Попробуйте запустить программу от имени администратора
TwiX вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Изменение разрешения при запуске формы artemavd Общие вопросы Delphi 2 16.07.2009 18:48
Изменение разрешения экрана Alex Cones Мультимедиа в Delphi 2 16.04.2009 19:34
Изменение разрешения в приложении Zeraim Общие вопросы Delphi 0 26.03.2009 20:16
разрешения общего доступа и ntfs разрешения Zerone Свободное общение 4 16.02.2009 17:05
изменение разрешения Sanek777 Общие вопросы Delphi 1 11.09.2008 17:43