当前位置:首页
开发技术指南» 文章正文
    引言:
 

 

 ·atx电源的接口说明    »显示摘要«
    摘要: atx电源的接口说明!如何让一个单独卸下来的电源开始工作? ......
 ·新的msdn下载地址    »显示摘要«
    摘要: 给正确连接,立刻给分 ......


在win98中使用ChangeDisplaySettings()的问题

写了个小程序,改变显示器的分辨率,使用了ChangeDisplaySettings()。  
  在2000/xp系统下正常,可切到win98下,分辨率可以改变,可是却无法改变显示器的刷新频率

NO.1   作者: JennyVenus

2000/xp和98的确有差别,软硬件都可能是原因。  
        DEVMODE   devMode;  
        ::ZeroMemory(&devMode,   sizeof(devMode));  
        devMode.dmDisplayFrequency   =   70;  
        devMode.dmFields   =   DM_DISPLAYFREQUENCY;  
        devMode.dmSize   =   sizeof(devMode);  
        ChangeDisplaySettings(&devMode,   0);  
 

NO.2   作者: JennyVenus

可以访问系统注册表HKEY_CURRENT_CONFIG\DISPLAY\SETINGS来获知当前的显示分辨率和颜色数。    
  但常用以下方法:    
  关键的API函数是EnumDisplaySettings和ChangeDisplaySettings。前者用来获得当前显示驱动所支持的所有显示模式,而后者用来改变显示模式。如果有个程序改变了显示模式,   则Windows会向所有正在运行的程序发送WM_DISPLAYCHANGE消息。获得当前显示模式可以使用下面的函数,它比访问注册表可靠。    
  Bool   CVideoModes   ::   GetCurrentVideoSettings(DEVMODE   *devmode)    
  {    
  HWND   hwndDesktop=GetDesktopWindow();    
  HDC   hdc=GetDC(hwndDesktop);    
  devmode   ->   dmSize   =sizeof(DEVMODE);    
  devmode   ->   dmBitsPerPel=GetDeviceCaps(hdc,BITSPIXEL);    
  devmode   ->   dmPelsWidth=GetSystemMetrics(SM_CXSCREEN);    
  devmode   ->   dmPelsHeight=GetSystemMetrics(SM_CYSCREEN);    
  devmode   ->   dmFields=DM_BITSPERPEL   |   DM_PELSWIDTH   |   DM_PELSHEIGHT;    
  return   TRUE;    
  }    
  下面的代码展示了如何使用EnumDisplaySettings获得当前支持的所有显示模式:    
  int   modenum,done;    
  DEVMODE   devmode;    
  done=0;    
  modenum=0;    
  do    
  {    
  done=!EnumDisplaySettings(NULL,modenum,&devmode);    
  AddToList(&devmode);    
  modenum++;    
  }while   (!done);    
 


    摘要: 我在刻盘的时候用nero这个软件,可是结果把病毒也刻进去了,我该怎么去杀掉上边的病毒呢? ......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE