获取屏幕颜色数的代码在windows98下失效(100分)

  • 主题发起人 主题发起人 hguhgu
  • 开始时间 开始时间
H

hguhgu

Unregistered / Unconfirmed
GUEST, unregistred user!
function EnumDisplaySettings(lpszDeviceName: LPCWSTR; iModeNum: DWORD;
var lpDevMode: DEVMODEW): BOOL; stdcall; forward;
function EnumDisplaySettings; external 'user32.dll' name 'EnumDisplaySettingsW';


procedure TForm1.Button1Click(Sender: TObject);
var
lpszDeviceName: LPCWSTR;
iModeNum: DWORD;
lpDevMode: DEVMODEW;
begin
EnumDisplaySettings(nil,$FFFFFFFF,lpDevMode);
caption := inttostr(lpDevMode.dmBitsPerPel);
end;
 
win98下可能要把'EnumDisplaySettingsW'改成'EnumDisplaySettingsA':
function EnumDisplaySettingsA; external 'user32.dll' name 'EnumDisplaySettingsA';
 
改成这样呢,这是从注册表中读:
EnumDisplaySettings(nil,$FFFFFFFE,lpDevMode);
 
抱歉,好像还是不行啊!
 
把'EnumDisplaySettingsW'改成'EnumDisplaySettings'
 
其实GetDeviceCaps()更方便。

procedure TForm1.Button2Click(Sender: TObject);
var
DC: HDC;
begin
DC := GetDC(HWND(nil));
caption := inttostr(GetDeviceCaps(DC,BITSPIXEL));
end;
 
谢谢,不过user32.dll中没有EnumDisplaySettings
只有:EnumDisplaySettingsA,EnumDisplaySettingsW,EnumDisplaySettingsExA,
EnumDisplaySettingsExW
 
试过GetDeviceCaps()了?
 
谢谢zw84611,高手!
 
function EnumDisplaySettings(lpszDeviceName: LPCWSTR; iModeNum: DWORD;
var lpDevMode: DEVMODEW): BOOL; stdcall; forward;
function EnumDisplaySettings; external 'user32.dll' name 'EnumDisplaySettingsA'
or
function EnumDisplaySettings(lpszDeviceName: LPCWSTR; iModeNum: DWORD;
var lpDevMode: DEVMODEW): BOOL; stdcall; external 'user32.dll' name 'EnumDisplaySettingsA'
 
不需要自己声明,在 windows 单元中有!!!!!!

直接用:

procedure TForm1.Button2Click(Sender: TObject);
var
lpszDeviceName: LPCWSTR;
iModeNum: DWORD;
lpDevMode: TDeviceMode; ///////////类型声明是这样的。
begin
EnumDisplaySettings(nil,$FFFFFFFF,lpDevMode);
caption := inttostr(lpDevMode.dmBitsPerPel);
end;
 
后退
顶部