J'ai une application MFC existante qui fonctionne bien en DPI par défaut (96 dpi) sous Windows 7. Mais lorsque j'augmente le DPI de 150%, l'interface utilisateur est déformée. J'ai des problèmes fixes à l'aide de barres de défilement à certains niveaux et de référence à l'article MSDN. Je me demande comment puis-je obtenir le DPI actuel d'un système à l'aide de code MFC afin de définir la hauteur et la largeur d'une boîte de dialogue. P>
S'il vous plaît suggérer !! p>
3 Réponses :
Tout d'abord, vous devez obtenir le contexte du périphérique pour votre écran. Ceci est facile, appelez simplement getdc, comme ceci: puis vous demandez les capacités de l'appareil du contexte de ce périphérique. Dans votre cas, vous avez besoin des pixels le long de l'axe X et Y par pouce: p> (voir http://msdn.microsoft.com/en-us/library/dd144877 (v = vs.85) .aspx pour plus d'informations sur GetDevicecapaps). p> Enfin, libérez le contexte de l'appareil: P> ReleaseDC (0, screen);
Suivre la réponse de Patrick, vous pouvez également aimer lire ce didacticiel Microsoft sur l'écriture d'une interface utilisateur au courant élevé DPI: P>
L'extrait de code ci-dessous m'a donné le DPI correct dans Win7
ID2D1Factory* m_pDirect2dFactory; D2D1CreateFactory(D2D1_FACTORY_TYPE_SINGLE_THREADED, &m_pDirect2dFactory); FLOAT dpiX, dpiY; m_pDirect2dFactory->GetDesktopDpi( &dpiX, &dpiY );
Est-ce exactement le même que getDevicecaps code> mais Win7 + uniquement.
Non, cela fonctionne également sur Vista SP2 avec la mise à jour de la plate-forme.