모든 물리적 화면의 픽셀을 개별적으로 가져오고 싶지만 MSDN에서는 GetDC
에 핸들을 가져올 화면을 알 필요가 있다고합니다. 창이나 마우스를 사용하지 않고 어떤 핸들을 사용할지 알려주는 방법이 있습니까?DC C++ Windows 핸들 Windows
그래서 EnumDisplayDevices
를 호출 할 수 있습니다 및 제안 루프로를 통해 연결되어 얼마나 많은 모니터를 찾기 위해 각각의 정보 :이 코드를 사용하여
http://msdn.microsoft.com/en-us/library/windows/desktop/dd144942(v=vs.85).aspx
: 문제는 내가 Microsoft에서 제공하는 코드를 사용하고있다 그것은 ++ 코드를 포팅 EnumDisplayDevices
전화
BOOL GetDisplayMonitorInfo(int nDeviceIndex, LPSTR lpszMonitorInfo)
{
FARPROC EnumDisplayDevices;
HINSTANCE hInstUser32;
DISPLAY_DEVICE DispDev;
char szSaveDeviceName[33];
BOOL bRet = TRUE;
HRESULT hr;
hInstUser32 = LoadLibrary("c:\\windows\User32.DLL");
if (!hInstUser32) return FALSE;
EnumDisplayDevices = (FARPROC)GetProcAddress(hInstUser32, "EnumDisplayDevicesA");
if (!EnumDisplayDevices) {
FreeLibrary(hInstUser32);
return FALSE;
}
ZeroMemory(&DispDev, sizeof(DispDev));
DispDev.cb = sizeof(DispDev);
if (EnumDisplayDevices(NULL, nDeviceIndex, &DispDev, 0))
{
hr = StringCchCopy(szSaveDeviceName, 33, DispDev.DeviceName);
if (FAILED(hr))
{
}
EnumDisplayDevices(szSaveDeviceName, 0, &DispDev, 0);
hr = StringCchCopy(lpszMonitorInfo, 129, DispDev.DeviceString);
if (FAILED(hr))
{
// TODO: write error handler
}
}
else {
bRet = FALSE;
}
FreeLibrary(hInstUser32);
return bRet;
}
을 처리하는 것입니다. 그리고 당신은 확실히 런타임 연결을 사용할 필요가 없습니다. –
내가 물어볼 수도 있습니다 : 왜 수동으로 Windows 라이브러리를 처음으로로드합니까? 그걸 동적으로 링크 할 수 있기 때문에 완전히 불필요합니다. 모든 LOAD/EXEC는 Windows에서 처리 할 수 있습니다 ... – specializt
왜냐하면 저는 매우 새롭고 내가하는 일을 정말로 모르기 때문입니다. 내가 찾을 수있는 것을 스스로 가르친다. 당신이 저를 주제에 대한 정보로 인도 할 수 있다면, 나는 매우 감사 할 것입니다. –