Changement resolution/frequence

Signaler
Messages postés
4
Date d'inscription
jeudi 9 octobre 2003
Statut
Membre
Dernière intervention
1 janvier 2005
-
Messages postés
1
Date d'inscription
samedi 1 avril 2006
Statut
Membre
Dernière intervention
13 janvier 2009
-
hello,
toutes les sources que j'ai trouvé sur le net ne fonctionne pas pleinnement.

ce que je voudrai c'est changer la resolution de l'écran (par exemple 800x600 mais sans toucher au nombre de couleur/frequence...) puis restaurer la configue originale, mais :
-compatible windows98 > XP
-sans foutre le bordel dans les icones du bureau
-sans changer la frequence de rafraichissement, couleurs ect...

toutes les sources que j'ai ont un pb, généralement c'est la frequence qui est à 60 htz apres avoir quitter le programme, icone en bordel....

merci d'avance.

2 réponses

Messages postés
1119
Date d'inscription
lundi 4 février 2002
Statut
Membre
Dernière intervention
4 octobre 2006
7
Hello,
Voici le moreceau de code que j'utilise dans mon soft pour demarrer en 1024*768 minimum. Je n'ai jamais eu de souci avec.

Bonne prog,
JMP.

en variable global :
ActiveDisplayMode : TDevMode; {Résolution}

Au demarrage de mon soft je fais :
If not(DisplayMode) then
ShowMessage('ASYNC 2000 est optimisé pour fonctionner en 1024 x 768.' +
Chr(10) + 'Votre ordinateur ne supporte pas cette résolution.');

A la fermeture de mon soft je fais :
ChangeDisplaySettings(ActiveDisplayMode,0);

la fonction :
{------------------------------------------------------------------------------}
{ Modifie la résolution si elle n'est pas 1024 x 768 }
{------------------------------------------------------------------------------}
function DisplayMode : Boolean;

var
Dm : TdeviceMode;
Hdc : THandle;
ScreenHeight,ScreenWidth,ScreenFrequency,ScreenProf : Real;
Compteur : Integer;
EncoreDesModes : Bool;
WorkDisplayMode : TDevMode;
Change : Integer;

begin
Hdc := Form50.Canvas.Handle;
ScreenHeight := GetDeviceCaps(Hdc,VertRes);
ScreenWidth := GetDeviceCaps(Hdc,HorzRes);
ScreenFrequency := GetDeviceCaps(Hdc,VREFRESH);
ScreenProf := GetDeviceCaps(Hdc,BITSPIXEL);

If (ScreenHeight < 768) and (ScreenWidth < 1024) then
begin
Change := 0;
Compteur := 0;

Repeat
EncoreDesModes := EnumDisplaySettings(nil,Compteur,Dm);
If (ScreenHeight Dm.DmPelsHeight) and (ScreenWidth Dm.DmPelsWidth) and (ScreenFrequency dm.dmDisplayFrequency) and (ScreenProf dm.dmBitsPerPel) then
begin
ActiveDisplayMode := Dm;
end;
If (Dm.DmPelsHeight 768) and (Dm.DmPelsWidth 1024) then
begin
WorkDisplayMode := Dm;
Change := 1;
end
else
begin
Result := False;
end;

Inc(Compteur);
until EncoreDesModes = False;

If Change = 1 then
begin
ShowMessage('ASYNC 2000 est optimisé pour fonctionner sous une résolution de 1024 x 768.' + Chr(13) +
'Votre résolution actuelle n''est pas adaptée. Le programme va basculer en 1024 x 768.' + Chr(13) +
'Votre résolution sera rétablie lors de la fermeture de ASYNC 2000.');
ChangeDisplaySettings(WorkDisplayMode,0);
Result := True;
end
else
begin
Result := False;
end;
end
else
begin
Result := True;
end;
end;
Messages postés
1
Date d'inscription
samedi 1 avril 2006
Statut
Membre
Dernière intervention
13 janvier 2009

Votre source est magnifique merci.