debug test正常运行

This commit is contained in:
2023-12-22 19:05:40 +08:00
parent 5cce100311
commit 94c19cf117
9 changed files with 103 additions and 95 deletions

View File

@@ -1,7 +1,4 @@
#ifndef STRING_UTIL_H
#define STRING_UTIL_H
#include <string>
#include <string>
#include <locale>
#include <codecvt>
@@ -18,7 +15,4 @@ std::string Wstring2String(const std::wstring& input) {
std::string Wchar2String(const WCHAR* input) {
std::wstring_convert<std::codecvt_utf8<wchar_t>> converter;
return converter.to_bytes(input);
}
#endif // STRING_CONVERSION_H
}

View File

@@ -1,10 +1,8 @@
#include "ScreenManager.h"
#include <Windows.h>
#include "spdlog/spdlog.h"
#include "spdlog/sinks/basic_file_sink.h"
#include "spdlog/sinks/stdout_color_sinks.h"
#include "Utils/StringUtil.h"
#include "Utils/Log.h"
#include <dxgi.h>
ScreenManager::ScreenManager()
{
@@ -43,43 +41,43 @@ void ScreenManager::_UpdateDisplayDeviceList()
void ScreenManager::_UpdateDisplayAdapterList()
{
LOG_FUNC_START();
HRESULT hr = S_OK;
IDXGIFactory* pFactory = nullptr;
hr = CreateDXGIFactory(__uuidof(IDXGIFactory), (void**)(&pFactory));
if (FAILED(hr)) {
spdlog::error("CreateDXGIFactory failed");
return;
}
LOG_FUNC_START();
HRESULT hr = S_OK;
IDXGIFactory* pFactory = nullptr;
hr = CreateDXGIFactory(__uuidof(IDXGIFactory), (void**)(&pFactory));
if (FAILED(hr)) {
spdlog::error("CreateDXGIFactory failed");
return;
}
IDXGIAdapter* pAdapter = nullptr;
for (UINT adapterIndex = 0; pFactory->EnumAdapters(adapterIndex, &pAdapter) != DXGI_ERROR_NOT_FOUND; ++adapterIndex)
{
DXGI_ADAPTER_DESC adapterDesc;
pAdapter->GetDesc(&adapterDesc);
spdlog::info("Adapter Index:{0}, Description:{1}, DeviceId:{2}, VendorId:{3}, SubSysId:{4}, Revision:{5}, AdapterLuid(H-L):{6}-{7} ",
adapterIndex, Wchar2String(adapterDesc.Description), adapterDesc.DeviceId, adapterDesc.VendorId, adapterDesc.SubSysId,
adapterDesc.Revision, adapterDesc.AdapterLuid.HighPart, adapterDesc.AdapterLuid.LowPart);
IDXGIAdapter* pAdapter = nullptr;
for (UINT adapterIndex = 0; pFactory->EnumAdapters(adapterIndex, &pAdapter) != DXGI_ERROR_NOT_FOUND; ++adapterIndex)
{
DXGI_ADAPTER_DESC adapterDesc;
pAdapter->GetDesc(&adapterDesc);
spdlog::info("Adapter Index:{0}, Description:{1}, DeviceId:{2}, VendorId:{3}, SubSysId:{4}, Revision:{5}, AdapterLuid(H-L):{6}-{7} ",
adapterIndex, Wchar2String(adapterDesc.Description), adapterDesc.DeviceId, adapterDesc.VendorId, adapterDesc.SubSysId,
adapterDesc.Revision, adapterDesc.AdapterLuid.HighPart, adapterDesc.AdapterLuid.LowPart);
// print adapter output info
IDXGIOutput* pOutput;
int outputCount = 0;
for (UINT j = 0; pAdapter->EnumOutputs(j, &pOutput) != DXGI_ERROR_NOT_FOUND; ++j) {
DXGI_OUTPUT_DESC outputDesc;
pOutput->GetDesc(&outputDesc);
// print adapter output info
IDXGIOutput* pOutput;
int outputCount = 0;
for (UINT j = 0; pAdapter->EnumOutputs(j, &pOutput) != DXGI_ERROR_NOT_FOUND; ++j) {
DXGI_OUTPUT_DESC outputDesc;
pOutput->GetDesc(&outputDesc);
MONITORINFOEX monitorInfo;
monitorInfo.cbSize = sizeof(MONITORINFOEX);
if (GetMonitorInfo(outputDesc.Monitor, &monitorInfo))
{
// 输出友好名称
spdlog::info("Adapter Output Index:{0}, DeviceName:{1}, szDevice:{2}, right:{3}, bottom:{4}",
j, Wchar2String(outputDesc.DeviceName), monitorInfo.szDevice, monitorInfo.rcMonitor.right, monitorInfo.rcMonitor.bottom);
}
}
}
pFactory->Release();
LOG_FUNC_END();
MONITORINFOEX monitorInfo;
monitorInfo.cbSize = sizeof(MONITORINFOEX);
if (GetMonitorInfo(outputDesc.Monitor, &monitorInfo))
{
// 输出友好名称
spdlog::info("Adapter Output Index:{0}, DeviceName:{1}, szDevice:{2}, right:{3}, bottom:{4}",
j, Wchar2String(outputDesc.DeviceName), monitorInfo.szDevice, monitorInfo.rcMonitor.right, monitorInfo.rcMonitor.bottom);
}
}
}
pFactory->Release();
LOG_FUNC_END();
}
BOOL ScreenManager::_EnumMonitorProc(HMONITOR hMonitor)

View File

@@ -1,9 +1,7 @@
#pragma once
#include <vector>
#include <map>
#include <Mmdeviceapi.h>
#include <dxgi1_6.h>
#include <dxgi.h>
class ScreenManager
{

8
WinDevice/src/main.cpp Normal file
View File

@@ -0,0 +1,8 @@
//
// Created by zyz on 2023/12/20.
//
#include "Video/ScreenManager.h"
int main() {
ScreenManager screenManager;
screenManager.UpdateDisplayInfo();
}