关于API"EnumDisplaySettings"的一个问题,请指教(100分)

  • 主题发起人 主题发起人 starblink
  • 开始时间 开始时间
S

starblink

Unregistered / Unconfirmed
GUEST, unregistred user!
begin<br>EnumDisplaySettings(<br>&nbsp; &nbsp; LPCTSTR lpszDeviceName, // specifies the display device<br>&nbsp; &nbsp; DWORD iModeNum, // specifies the graphics mode<br>&nbsp; &nbsp; LPDEVMODE lpDevMode // points to structure to receive settings<br>&nbsp; &nbsp;);<br>lpdevmode:=dmPelsWidth or dmPelsHeight or dmDisplayFrequency;<br>...<br>end;<br>以上代码在windows2000下非常正常,但在win98下,得到的屏幕刷新率只有零。<br>MSDN中解释如下:<br>When you call the EnumDisplaySettings function, the dmDisplayFrequency<br>&nbsp;member may return with the value 0 or 1. These values represent the <br>display hardware's default refresh rate. This default rate is typically<br>&nbsp;set by switches on a display card or computer motherboard, or by a<br>&nbsp;configuration program that does not use Win32 display functions such <br>as ChangeDisplaySettings...<br>我想问一下这个问题在98下的完美解决方法,请大虾指教,谢谢。<br>
 
试试以下的代码:<br><br>var dev:TDeviceMode;<br>begin<br>dev.dmSize:=sizeof(dev);<br>EnumDisplaySettings(nil,dword(-2),dev);<br>showmessage('current display frquency'+inttostr(dev.dmDisplayFrequency));<br>end;<br><br>应该没问题
 
补充:<br>函数EnumDisplaySettings(<br>&nbsp; &nbsp; LPCTSTR lpszDeviceName, // specifies the display device<br>&nbsp; &nbsp; DWORD iModeNum, // specifies the graphics mode<br>&nbsp; &nbsp; LPDEVMODE lpDevMode // points to structure to receive settings<br>&nbsp; &nbsp;);<br>参数 iModNum=DWORD(-2);//ENUM_REGISTRY_SETTINGS;
 
<br>请问高手:<br>&nbsp; &nbsp;在 PB 中如何使用以上函数(取得分辨率),并且如何自己设置分辨率
 
请教秋风萧萧大虾:<br>&nbsp; &nbsp; 这种方式确实可以获得当前刷新率,但我想得到所有支持的屏幕显示方式的刷新率,<br>也就是依次列举获得所有支持的分辨率,这时得到的刷新率是零,请问该如何解决这个问<br>题?可能的话,麻烦你解释一下原因。<br>
 
秋风萧萧大虾,我也想知道呀,麻烦你回答。
 
后退
顶部