在编程时,是否有API可以获取显卡的主频、显示器的对比度,或者其他什么方法可以实现同样的功能(除了借助于其他软件),欢迎有进行过相关编程的达人进行解答 (∩_∩)o...
解决方案 »
- 高分求教:关于CList,CString的奇怪问题
- socket新人遇到的很头疼的问题?
- 问个c++简单问题
- CXTCaption不能单独改变颜色
- 急!!!LIST CONTROL控件
- 什么是libc.lib 哪里能找到呢
- 请问侯杰翻译的《Multithreading Application in Win 32》那里有免费的下载???
- 关于完成端口和线程池的问题?
- 有关声音的问题
- 程序越写越大,到后来编译通过之后一执行就非法操作(或者某项操作非法),也不知道哪出毛病了,难道我只能放弃代码重写吗?DEBUG是干什么的?怎么用?非法操作时的某某位置页面错误提示的是什么?
- 多线程实现归并排序
- CFile创建文件失败
IDirect3D9::GetAdapterIdentifierDescribes the physical display adapters present in the system when the IDirect3D9 interface was instantiated.HRESULT GetAdapterIdentifier(
UINT Adapter,
DWORD Flags,
D3DADAPTER_IDENTIFIER9 * pIdentifier
);用D3DADAPTER_IDENTIFIER9返回显卡信息,下面是D3DADAPTER_IDENTIFIER9的定义typedef struct D3DADAPTER_IDENTIFIER9 {
char Driver[MAX_DEVICE_IDENTIFIER_STRING];
char Description[MAX_DEVICE_IDENTIFIER_STRING];
char DeviceName[32];
LARGE_INTEGER DriverVersion;
DWORD DriverVersionLowPart;
DWORD DriverVersionHighPart;
DWORD VendorId;
DWORD DeviceId;
DWORD SubSysId;
DWORD Revision;
GUID DeviceIdentifier;
DWORD WHQLLevel;
} D3DADAPTER_IDENTIFIER9, *LPD3DADAPTER_IDENTIFIER9;//代码LPDIRECT3D9 pD3D=NULL;
pD3D=Direct3DCreate9(D3D_SDK_VERSION);//创建Direct 3D对象
DWORD m_dwNumAdapters=pD3D-> GetAdapterCount();//获得显卡数量
for(UINT iAdapter=0;iAdapter<m_dwNumAdapters;iAdapter++)
{
D3DADAPTER_IDENTIFIER9 di;
pD3D-> GetAdapterIdentifier(iAdapter,0,&di);//获得显卡信息
char szBuf[256];
sprintf(szBuf,"%s",di.Description);//
MessageBox(szBuf);
}
// provider and version of each pci device:
//retrieve a set of all devices on the Peripheral Component Interconnect (PCI)
//bus.
HDEVINFO hPciDevInfo = SetupDiGetClassDevs(NULL,REGSTR_KEY_PCIENUM,0,
DIGCF_PRESENT | DIGCF_ALLCLASSES );
if (hPciDevInfo == INVALID_HANDLE_VALUE) return ;
// Show all related device in the PCI set
DisplayDriverDsp(hPciDevInfo);
void CTestDlg::DisplayDriverDsp(HDEVINFO hDevInfo)
{
SP_DEVINFO_DATA DeviceInfoData;
DeviceInfoData.cbSize = sizeof(SP_DEVINFO_DATA);
TCHAR buffer[MAX_PATH];
ZeroMemory(buffer, MAX_PATH);
HKEY hCurKey;
CString strConstKey;
HKEY hRootKey = HKEY_LOCAL_MACHINE;
if (bIsNt)
strConstKey = "SYSTEM\\CurrentControlSet\\Control\\Class\\";
else
strConstKey = "SYSTEM\\CurrentControlSet\\Services\\Class\\";
/*DWORD dwI, dwValueType;
TCHAR szValueName[MAX_PATH];
TCHAR szValueData[MAX_PATH];
ZeroMemory(szValueName, MAX_PATH);
ZeroMemory(szValueData, MAX_PATH);
DWORD dwVNameSize, dwVDataSize;
dwVNameSize = MAX_PATH;
dwVDataSize = MAX_PATH;*/
for (DWORD i=0;SetupDiEnumDeviceInfo(hDevInfo,i,&DeviceInfoData);i++)
{
SetupDiGetDeviceRegistryProperty(hDevInfo, &DeviceInfoData,
SPDRP_DRIVER, NULL, (PBYTE)buffer, MAX_PATH, NULL);
CString strKey = strConstKey;
strKey += buffer;
if (ERROR_SUCCESS != ::RegOpenKey(hRootKey, (LPCSTR)strKey, &hCurKey))
{
TRACE("%d", GetLastError());
return;
}
// Get the driver description
DWORD dwType = REG_SZ;
if (ERROR_SUCCESS != ::RegQueryValueEx(hCurKey, "DriverDesc", NULL,
&dwType, (LPBYTE)szValueData, &dwVDataSize))
return;
// Get provider name
if (ERROR_SUCCESS != ::RegQueryValueEx(hCurKey, "ProviderName", NULL, &dwType, (LPBYTE)szValueData, &dwVDataSize))
return;
// Retrieve version:
if (ERROR_SUCCESS != ::RegQueryValueEx(hCurKey, "Ver", NULL, &dwType, (LPBYTE)szValueData, &dwVDataSize))
return;
}
int nHeightPixel = dc.GetDeviceCaps(VERTRES);长度是多少像素