Changement resolution/frequence

kanader6 Messages postés 4 Date d'inscription jeudi 9 octobre 2003 Statut Membre Dernière intervention 1 janvier 2005 - 14 oct. 2004 à 15:18
redamob Messages postés 1 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 13 janvier 2009 - 13 janv. 2009 à 09:37
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

jmp77 Messages postés 1119 Date d'inscription lundi 4 février 2002 Statut Membre Dernière intervention 4 octobre 2006 7
14 oct. 2004 à 15:37
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;
0
redamob Messages postés 1 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 13 janvier 2009
13 janv. 2009 à 09:37
Votre source est magnifique merci.
0
Rejoignez-nous