如何使程序适应不同的分辨率和大小不一样的显示器??

解决方案 »

  1.   

    怎样用程序改变分辨率?
    ---------------------------------------------------------------  
     
    LONG  ChangeDisplaySettings(  
       LPDEVMODE  lpDevMode,    //  graphics  mode  
       DWORD  dwflags                  //  graphics  mode  options  
    );  
     
    ---------------------------------------------------------------  
     
    int  nFullWidth=GetSystemMetrics(SM_CXSCREEN);  
    int  nFullHeight=GetSystemMetrics(SM_CYSCREEN);  
    bool  bChanged=0;  
    if(nFullWidth!=800    ¦  ¦  nFullHeight!=600)//change    to  800*600;  
    {  
    DEVMODE  lpDevMode;  
    lpDevMode.dmBitsPerPel=16;//Change  from  24  to  16  
    lpDevMode.dmPelsWidth=800;  
    lpDevMode.dmPelsHeight=600;  
    lpDevMode.dmDisplayFrequency=85;  
    lpDevMode.dmSize=sizeof(DEVMODE);  
    lpDevMode.dmFields  =DM_PELSWIDTH  ¦DM_PELSHEIGHT  ¦DM_BITSPERPEL  ¦DM_DISPLAYFREQUENCY;  
    LONG  result;  
    //EnumDisplaySettings(NULL,ENUM_REGISTRY_SETTINGS,&lpDevMode);  
    result=ChangeDisplaySettingsEx(NULL,&lpDevMode,NULL,0,NULL);  
    if  (result==DISP_CHANGE_SUCCESSFUL)  
    {  
    result=ChangeDisplaySettingsEx(NULL,&lpDevMode,NULL,CDS_UPDATEREGISTRY,NULL);  
     
    bChanged=1;  
    }  
    else  
    {  
    result=ChangeDisplaySettingsEx(NULL,&lpDevMode,NULL,0,NULL);  
    }  
    }  
     
    ---------------------------------------------------------------  
     
    LONG  ChangeDisplaySettings();