2009-08-10 9 views
0

Existe-t-il une condition préalable à l'appel de GetDeviceCaps? J'essaie de découvrir (au moment de l'exécution) si la résolution d'écran native pour un périphérique Windows Mobile est QGVA ou VGA. Les valeurs de retour suivantes sont tous nuls dans OnInitDialog():Windows Mobile GetDeviceCaps renvoie toujours zéro

CDC* dc = GetDC(); 
int horzRes = GetDeviceCaps(HDC(dc), HORZRES); 
int vertRes = GetDeviceCaps(HDC(dc), VERTRES); 
int xLogPixels = GetDeviceCaps(HDC(dc), LOGPIXELSX); 
int yLogPixels = GetDeviceCaps(HDC(dc), LOGPIXELSY); 

Répondre

1

Essayez ceci:

int HORZRES = GetSystemMetrics (SM_CXSCREEN);

int vertRes = GetSystemMetrics (SM_CYSCREEN);

1

Il sont des conditions vraiment ...

http://msdn.microsoft.com/en-us/library/ms838191.aspx dit:

  1. Dans le menu Insertion, sélectionnez la ressource.
  2. Cliquez sur le bouton Personnaliser.
  3. Entrez CEUX pour le type de ressource.
  4. Définissez les données de ressource sur 01 00.
  5. Cliquez sur l'onglet Propriétés.
  6. Renommez l'élément en "HI_RES_AWARE", y compris les guillemets. (Si les guillemets sont omis, HI_RES_AWARE sera incorrectement défini comme une valeur numérique dans resource.h et vous devrez revenir en arrière et supprimer la ligne de resource.h.)
  7. Désélectionnez la case à cocher de fichier externe. (quel que soit ce que cela signifie)

pour permettre le développement d'applications sensibles à haute résolution.

je n'étais pas en mesure de créer la ressource CEUX De cette façon, mais j'a réussi après que je viens d'ajouter au fichier de ressources directement, par exemple:

HI_RES_AWARE CEUX {1}  // To turn off the emulation layer 

Le code d'application doit également avoir une introduction :

AfxEnableDRA(true); 

Même après cela, toutes les valeurs de GetDeviceCaps ci-dessus étaient encore zéro, mais

int widthX = GetSystemMetrics(SM_CXFULLSCREEN); 
int heightY = GetSystemMetrics(SM_CYFULLSCREEN); 
int captionHeight = GetSystemMetrics(SM_CYCAPTION); 
int menuHeight = GetSystemMetrics(SM_CYMENU); 
int dialogFrameWidth = GetSystemMetrics(SM_CXDLGFRAME); 
int dialogFrameHeight = GetSystemMetrics(SM_CYDLGFRAME); 

toutes les valeurs retournées (haute résolution) sur les périphériques et les émulateurs PPC03se et WM5 à résolution VGA.

Questions connexes