2010-11-09 24 views
0

Spécifiquement, le résultat "change-t-il" dans le code suivant lorsque le DPI est augmenté via les paramètres d'affichage du panneau de configuration de Windows?Est-ce que SystemParametersInfo DPI est au courant?

UINT result = 0; 
if(SystemParametersInfo(SPI_GETFOCUSBORDERHEIGHT, 0, &result, 0) != FALSE) 
{ 
    result = ?; 
} 

La raison pour laquelle je ne peux pas vérifier moi-même est que je ne peux pas changer le réglage DPI sur l'ordinateur je travaille parce que l'administrateur a désactivé l'option.

Répondre

0

Les documents ne sont pas clairs, mais en général, le 3ème paramètre est uniquement in/out car l'API Win32 est ici surchargée en tant que getter et setter. Je ne m'attendrais pas à ce que cela change sur un appel SET mais sur l'appel GET que vous avez ci-dessus, oui il va changer pour indiquer la valeur actuelle. Aviez-vous l'intention de publier un appel SET? Le texte de la question implique que vous essayez de définir la valeur.

Pour le code suivant, la valeur ne doit pas changer:

UINT result = REQUIRED_NEW_VALUE; 
if(SystemParametersInfo(SPI_SETFOCUSBORDERHEIGHT, 0, &result, 0) != FALSE) 
{ 
    // result == the same as what was input 
} 

Pour le code affiché, result passera de 0 à la valeur configurée actuelle:

UINT result = 0; 
if(SystemParametersInfo(SPI_GETFOCUSBORDERHEIGHT, 0, &result, 0) != FALSE) 
{ 
    // result == the current configured value 
} 
+0

Erm, ce n'est pas ce que je voulais dire, j'ai peur. Le code que j'ai posté "récupère la hauteur, en pixels, des bords supérieur et inférieur du rectangle de focus dessiné par DrawFocusRect". Dans XP, à la valeur par défaut de 96 DPI, "result" sera défini sur "1" par SystemParametersInfo. Ma question était de savoir si, après avoir réglé le DPI du système à une valeur plus élevée en utilisant "Panneau de configuration -> Affichage -> Paramètres -> Avancé", SystemParametersInfo mettra une valeur différente dans "résultat". Par exemple. à deux fois le DPI, je m'attendrais à ce qu'il mette "résultat" à "2". – sally

+0

@sally - Je vois, désolé pour la confusion. Êtes-vous en mesure d'essayer cela sur un bureau à domicile en utilisant Visual C++ Express Edition, par exemple? –