Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
J
jlib
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
captainwong
jlib
Commits
4f3b52c6
Commit
4f3b52c6
authored
May 04, 2020
by
captainwong
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
add win32/monitor.h
parent
8059c57a
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
489 additions
and
0 deletions
+489
-0
monitor.h
jlib/win32/monitor.h
+284
-0
test.sln
test/test.sln
+12
-0
test_monitor.cpp
test/test_monitor/test_monitor.cpp
+13
-0
test_monitor.vcxproj
test/test_monitor/test_monitor.vcxproj
+149
-0
test_monitor.vcxproj.filters
test/test_monitor/test_monitor.vcxproj.filters
+27
-0
test_monitor.vcxproj.user
test/test_monitor/test_monitor.vcxproj.user
+4
-0
No files found.
jlib/win32/monitor.h
0 → 100644
View file @
4f3b52c6
#pragma once
#include <Windows.h>
#include <string>
#include <vector>
namespace
jlib
{
namespace
win32
{
struct
MonitorInfo
{
struct
Resolution
{
int
w
;
int
h
;
int
hz
;
bool
operator
==
(
const
Resolution
&
r
)
const
{
return
w
==
r
.
w
&&
h
==
r
.
h
&&
hz
==
r
.
hz
;
}
std
::
wstring
toString
()
const
{
std
::
wstring
res
=
std
::
to_wstring
(
w
)
+
L"x"
+
std
::
to_wstring
(
h
)
+
L" "
+
std
::
to_wstring
(
hz
)
+
L"Hz"
;
return
res
;
}
bool
valid
()
const
{
return
!
(
w
==
0
||
h
==
0
||
hz
==
0
);
}
};
bool
isMain
=
false
;
std
::
wstring
name
=
{};
std
::
wstring
deviceName
=
{};
std
::
wstring
deviceString
=
{};
Resolution
curResolution
=
{};
std
::
vector
<
Resolution
>
supportResolutions
=
{};
bool
isResolutionSupport
(
int
w
,
int
h
,
int
hz
)
const
{
for
(
const
auto
&
r
:
supportResolutions
)
{
if
(
r
.
w
==
w
&&
r
.
h
==
h
&&
r
.
hz
==
hz
)
{
return
true
;
}
}
return
false
;
}
bool
isResolutionSupport
(
const
Resolution
&
r
)
const
{
for
(
const
auto
&
l
:
supportResolutions
)
{
if
(
l
==
r
)
{
return
true
;
}
}
return
false
;
}
bool
valid
()
const
{
return
curResolution
.
valid
()
&&
!
name
.
empty
()
&&
!
deviceName
.
empty
()
&&
!
supportResolutions
.
empty
();
}
std
::
wstring
toString
(
bool
withSupportRes
=
false
)
const
{
std
::
wstring
str
=
L"{
\n
"
;
str
+=
L" isMain : "
;
str
+=
isMain
?
L"true"
:
L"false"
;
str
+=
L"
\n
"
;
str
+=
L" name : "
+
name
+
L"
\n
"
;
str
+=
L" deviceName : "
+
deviceName
+
L"
\n
"
;
str
+=
L" deviceString : "
+
deviceString
+
L"
\n
"
;
str
+=
L" curResolution : "
+
curResolution
.
toString
()
+
L"
\n
"
;
if
(
withSupportRes
)
{
str
+=
L" supportResolutions : {
\n
"
;
for
(
const
auto
&
res
:
supportResolutions
)
{
str
+=
L" "
+
res
.
toString
()
+
L"
\n
"
;
}
str
+=
L" }
\n
"
;
}
str
+=
L"}
\n
"
;
return
str
;
}
};
typedef
std
::
vector
<
MonitorInfo
>
MonitorInfos
;
static
MonitorInfos
getMonitors
()
{
MonitorInfos
mis
;
BOOL
ret
=
FALSE
;
DWORD
iDevNum
=
0
;
do
{
DISPLAY_DEVICE
displayDevice
;
ZeroMemory
(
&
displayDevice
,
sizeof
(
DISPLAY_DEVICE
));
displayDevice
.
cb
=
sizeof
(
displayDevice
);
ret
=
EnumDisplayDevicesW
(
NULL
,
iDevNum
,
&
displayDevice
,
0
);
//qDebug("StateFlags 0x%X",displayDevice.StateFlags);
if
(
ret
&&
(
displayDevice
.
StateFlags
&
DISPLAY_DEVICE_ATTACHED_TO_DESKTOP
))
{
//MYQDEBUG << "Device #" << iDevNum;
//dumpDISPLAY_DEVICE(displayDevice);
MonitorInfo
mi
;
mi
.
deviceName
=
displayDevice
.
DeviceName
;
mi
.
deviceString
=
displayDevice
.
DeviceString
;
if
(
displayDevice
.
StateFlags
&
DISPLAY_DEVICE_PRIMARY_DEVICE
)
{
mi
.
isMain
=
true
;
}
DEVMODE
dm
=
{
0
};
dm
.
dmSize
=
sizeof
(
dm
);
EnumDisplaySettings
(
displayDevice
.
DeviceName
,
ENUM_CURRENT_SETTINGS
,
&
dm
);
mi
.
curResolution
.
w
=
dm
.
dmPelsWidth
;
mi
.
curResolution
.
h
=
dm
.
dmPelsHeight
;
mi
.
curResolution
.
hz
=
dm
.
dmDisplayFrequency
;
for
(
int
i
=
0
;
0
!=
EnumDisplaySettingsW
(
displayDevice
.
DeviceName
,
i
,
&
dm
);
i
++
)
{
MonitorInfo
::
Resolution
r
{
(
int
)
dm
.
dmPelsWidth
,
(
int
)
dm
.
dmPelsHeight
,
(
int
)
dm
.
dmDisplayFrequency
};
if
(
!
mi
.
isResolutionSupport
(
r
))
{
mi
.
supportResolutions
.
push_back
(
r
);
}
}
// detached device, use first supportted res
if
(
!
mi
.
supportResolutions
.
empty
())
{
if
(
!
mi
.
curResolution
.
valid
())
{
mi
.
curResolution
=
mi
.
supportResolutions
.
front
();
}
DISPLAY_DEVICE
dd
;
ZeroMemory
(
&
dd
,
sizeof
(
DISPLAY_DEVICE
));
dd
.
cb
=
sizeof
(
dd
);
int
iMonitorNum
=
0
;
if
(
EnumDisplayDevices
(
displayDevice
.
DeviceName
,
iMonitorNum
,
&
dd
,
0
))
{
//MYQDEBUG << "Device #" << iDevNum << "Monitor #" << iMonitorNum;
//dumpDISPLAY_DEVICE(dd);
std
::
wstring
name
=
dd
.
DeviceString
;
if
(
name
!=
L"Generic PnP Monitor"
&&
name
!=
L"通用即插即用监视器"
)
{
mi
.
name
=
name
;
}
else
{
std
::
wstring
deviceId
=
dd
.
DeviceID
;
deviceId
=
deviceId
.
substr
(
8
,
deviceId
.
find
(
L"
\\
"
,
9
)
-
8
);
mi
.
name
=
deviceId
;
}
//dumpMoniterInfo(mi);
mis
.
push_back
(
mi
);
ZeroMemory
(
&
dd
,
sizeof
(
DISPLAY_DEVICE
));
dd
.
cb
=
sizeof
(
dd
);
iMonitorNum
++
;
}
}
else
{
#ifdef _DEBUG
//MYQDEBUG << "no supported resolutions!";
#endif
DISPLAY_DEVICE
dd
;
ZeroMemory
(
&
dd
,
sizeof
(
DISPLAY_DEVICE
));
dd
.
cb
=
sizeof
(
dd
);
int
iMonitorNum
=
0
;
if
(
EnumDisplayDevices
(
displayDevice
.
DeviceName
,
iMonitorNum
,
&
dd
,
0
))
{
//MYQDEBUG << "Device #" << iDevNum << "Monitor #" << iMonitorNum;
//dumpDISPLAY_DEVICE(dd);
std
::
wstring
name
=
dd
.
DeviceString
;
if
(
name
!=
L"Generic PnP Monitor"
&&
name
!=
L"通用即插即用监视器"
)
{
mi
.
name
=
name
;
}
else
{
std
::
wstring
deviceId
=
dd
.
DeviceID
;
deviceId
=
deviceId
.
substr
(
8
,
deviceId
.
find
(
L"
\\
"
,
9
)
-
8
);
mi
.
name
=
deviceId
;
}
//dumpMoniterInfo(mi);
mis
.
push_back
(
mi
);
ZeroMemory
(
&
dd
,
sizeof
(
DISPLAY_DEVICE
));
dd
.
cb
=
sizeof
(
dd
);
iMonitorNum
++
;
}
}
}
iDevNum
++
;
}
while
(
ret
);
return
mis
;
}
//! 设置显示模式:扩展模式
static
bool
setExtendMode
()
{
auto
ret
=
SetDisplayConfig
(
0
,
NULL
,
0
,
NULL
,
SDC_TOPOLOGY_EXTEND
|
SDC_APPLY
);
//MYQDEBUG << "SetDisplayConfig SDC_TOPOLOGY_EXTEND returns:" << (ret == ERROR_SUCCESS);
return
ret
==
ERROR_SUCCESS
;
}
//! 设置显示模式:克隆模式
static
bool
setCloneMode
()
{
auto
ret
=
SetDisplayConfig
(
0
,
NULL
,
0
,
NULL
,
SDC_TOPOLOGY_CLONE
|
SDC_APPLY
);
//MYQDEBUG << "SetDisplayConfig SDC_TOPOLOGY_CLONE returns:" << (ret == ERROR_SUCCESS);
return
ret
==
ERROR_SUCCESS
;
}
//void setOnlyDisplayInMainMonitor() {
// auto ret = SetDisplayConfig(0, NULL, 0, NULL, SDC_TOPOLOGY_INTERNAL | SDC_APPLY);
// MYQDEBUG << "SetDisplayConfig SDC_TOPOLOGY_EXTEND returns:" << ret;
//}
//
//void setOnlyDisplayInSecondMonitor() {
// auto ret = SetDisplayConfig(0, NULL, 0, NULL, SDC_TOPOLOGY_EXTERNAL | SDC_APPLY);
// MYQDEBUG << "SetDisplayConfig SDC_TOPOLOGY_EXTERNAL returns:" << ret;
//}
//! 设置后必须提交,否则不生效
static
bool
commitChange
()
{
auto
ret
=
ChangeDisplaySettingsExW
(
NULL
,
NULL
,
NULL
,
0
,
NULL
);
//MYQDEBUG << "commitChange ChangeDisplaySettingsExW returns:" << (ret == ERROR_SUCCESS);
return
ret
==
ERROR_SUCCESS
;
};
/*
* @brief 禁用某个显示器
* @param deviceName MonitorInfo::deviceName
*/
static
bool
disableMonitor
(
const
std
::
wstring
&
deviceName
)
{
DEVMODEW
dm
=
{
0
};
dm
.
dmSize
=
sizeof
(
dm
);
dm
.
dmFields
=
DM_POSITION
|
DM_PELSWIDTH
|
DM_PELSHEIGHT
;
dm
.
dmPelsWidth
=
dm
.
dmPelsHeight
=
0
;
DWORD
dwFlags
=
CDS_UPDATEREGISTRY
|
CDS_GLOBAL
|
CDS_NORESET
;
auto
ret
=
ChangeDisplaySettingsExW
(
deviceName
.
data
(),
&
dm
,
nullptr
,
dwFlags
,
nullptr
);
//MYQDEBUG << "disableMonitor ChangeDisplaySettingsExW returns:" << (ret == ERROR_SUCCESS);
return
commitChange
();
}
/*
* @brief 设置主显示器
* @param newMain 新的主显示器
* @param oldMain 旧的主显示器
*/
static
bool
setMainMonitor
(
const
MonitorInfo
&
newMain
,
const
MonitorInfo
&
oldMain
)
{
auto
moveOld
=
[](
const
MonitorInfo
&
newMain
,
const
MonitorInfo
&
oldMain
)
{
DEVMODEW
dm
=
{
0
};
dm
.
dmSize
=
sizeof
(
dm
);
dm
.
dmFields
=
DM_POSITION
;
dm
.
dmPosition
.
x
=
newMain
.
curResolution
.
w
;
DWORD
dwFlags
=
CDS_UPDATEREGISTRY
|
CDS_GLOBAL
|
CDS_NORESET
;
auto
ret
=
ChangeDisplaySettingsExW
(
oldMain
.
deviceName
.
data
(),
&
dm
,
nullptr
,
dwFlags
,
nullptr
);
//MYQDEBUG << "moveOld ChangeDisplaySettingsExW returns:" << (ret == ERROR_SUCCESS);
return
ret
==
ERROR_SUCCESS
;
};
auto
moveNew
=
[](
const
MonitorInfo
&
newMain
)
{
DEVMODEW
dm
=
{
0
};
dm
.
dmSize
=
sizeof
(
dm
);
dm
.
dmFields
=
DM_POSITION
;
dm
.
dmPosition
.
x
=
dm
.
dmPosition
.
y
=
0
;
DWORD
dwFlags
=
CDS_UPDATEREGISTRY
|
CDS_GLOBAL
|
CDS_NORESET
|
CDS_SET_PRIMARY
;
auto
ret
=
ChangeDisplaySettingsExW
(
newMain
.
deviceName
.
data
(),
&
dm
,
nullptr
,
dwFlags
,
nullptr
);
//MYQDEBUG << "moveNew ChangeDisplaySettingsExW returns:" << (ret == ERROR_SUCCESS);
return
ret
==
ERROR_SUCCESS
;
};
moveOld
(
newMain
,
oldMain
);
moveNew
(
newMain
);
return
commitChange
();
}
//! 修改显示器分辨率、刷新率
static
bool
changeResolution
(
const
MonitorInfo
&
monitor
,
const
MonitorInfo
::
Resolution
&
res
)
{
DEVMODEW
dm
=
{
0
};
dm
.
dmSize
=
sizeof
(
dm
);
dm
.
dmPelsWidth
=
res
.
w
;
dm
.
dmPelsHeight
=
res
.
h
;
dm
.
dmDisplayFrequency
=
res
.
hz
;
dm
.
dmFields
=
DM_PELSWIDTH
|
DM_PELSHEIGHT
|
DM_DISPLAYFREQUENCY
;
DWORD
dwFlags
=
CDS_UPDATEREGISTRY
|
CDS_GLOBAL
;
auto
ret
=
ChangeDisplaySettingsExW
(
monitor
.
deviceName
.
data
(),
&
dm
,
nullptr
,
dwFlags
,
nullptr
);
//MYQDEBUG << "changeResolution ChangeDisplaySettingsExW returns:" << (ret == ERROR_SUCCESS);
return
commitChange
();
}
}
}
test/test.sln
View file @
4f3b52c6
...
@@ -56,6 +56,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "win32", "win32", "{B5D9E71E
...
@@ -56,6 +56,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "win32", "win32", "{B5D9E71E
..\jlib\win32\deviceuniqueidentifier.h = ..\jlib\win32\deviceuniqueidentifier.h
..\jlib\win32\deviceuniqueidentifier.h = ..\jlib\win32\deviceuniqueidentifier.h
..\jlib\win32\file_op.h = ..\jlib\win32\file_op.h
..\jlib\win32\file_op.h = ..\jlib\win32\file_op.h
..\jlib\win32\memory_micros.h = ..\jlib\win32\memory_micros.h
..\jlib\win32\memory_micros.h = ..\jlib\win32\memory_micros.h
..\jlib\win32\monitor.h = ..\jlib\win32\monitor.h
..\jlib\win32\MyWSAError.h = ..\jlib\win32\MyWSAError.h
..\jlib\win32\MyWSAError.h = ..\jlib\win32\MyWSAError.h
..\jlib\win32\odbccp32.lib = ..\jlib\win32\odbccp32.lib
..\jlib\win32\odbccp32.lib = ..\jlib\win32\odbccp32.lib
..\jlib\win32\path_helper.h = ..\jlib\win32\path_helper.h
..\jlib\win32\path_helper.h = ..\jlib\win32\path_helper.h
...
@@ -291,6 +292,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "simple7zwrapper", "simple7z
...
@@ -291,6 +292,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "simple7zwrapper", "simple7z
EndProject
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test_strutil", "test_strutil\test_strutil.vcxproj", "{0C743CE7-E49C-47F8-BC53-13929EA5CDA3}"
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test_strutil", "test_strutil\test_strutil.vcxproj", "{0C743CE7-E49C-47F8-BC53-13929EA5CDA3}"
EndProject
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test_monitor", "test_monitor\test_monitor.vcxproj", "{5EA0AFE3-134D-4573-B8E7-ADEC802722DF}"
EndProject
Global
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|x64 = Debug|x64
Debug|x64 = Debug|x64
...
@@ -589,6 +592,14 @@ Global
...
@@ -589,6 +592,14 @@ Global
{0C743CE7-E49C-47F8-BC53-13929EA5CDA3}.Release|x64.Build.0 = Release|x64
{0C743CE7-E49C-47F8-BC53-13929EA5CDA3}.Release|x64.Build.0 = Release|x64
{0C743CE7-E49C-47F8-BC53-13929EA5CDA3}.Release|x86.ActiveCfg = Release|Win32
{0C743CE7-E49C-47F8-BC53-13929EA5CDA3}.Release|x86.ActiveCfg = Release|Win32
{0C743CE7-E49C-47F8-BC53-13929EA5CDA3}.Release|x86.Build.0 = Release|Win32
{0C743CE7-E49C-47F8-BC53-13929EA5CDA3}.Release|x86.Build.0 = Release|Win32
{5EA0AFE3-134D-4573-B8E7-ADEC802722DF}.Debug|x64.ActiveCfg = Debug|x64
{5EA0AFE3-134D-4573-B8E7-ADEC802722DF}.Debug|x64.Build.0 = Debug|x64
{5EA0AFE3-134D-4573-B8E7-ADEC802722DF}.Debug|x86.ActiveCfg = Debug|Win32
{5EA0AFE3-134D-4573-B8E7-ADEC802722DF}.Debug|x86.Build.0 = Debug|Win32
{5EA0AFE3-134D-4573-B8E7-ADEC802722DF}.Release|x64.ActiveCfg = Release|x64
{5EA0AFE3-134D-4573-B8E7-ADEC802722DF}.Release|x64.Build.0 = Release|x64
{5EA0AFE3-134D-4573-B8E7-ADEC802722DF}.Release|x86.ActiveCfg = Release|Win32
{5EA0AFE3-134D-4573-B8E7-ADEC802722DF}.Release|x86.Build.0 = Release|Win32
EndGlobalSection
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
HideSolutionNode = FALSE
...
@@ -655,6 +666,7 @@ Global
...
@@ -655,6 +666,7 @@ Global
{ECF057F3-AB01-4129-8C5C-E59DD4261770} = {5AFB3C82-FDEA-458C-9B56-E28A3F96F113}
{ECF057F3-AB01-4129-8C5C-E59DD4261770} = {5AFB3C82-FDEA-458C-9B56-E28A3F96F113}
{41C26D67-0174-41AC-850E-1F84181138E5} = {729A65CE-3F07-4C2E-ACDC-F9EEC6477F2A}
{41C26D67-0174-41AC-850E-1F84181138E5} = {729A65CE-3F07-4C2E-ACDC-F9EEC6477F2A}
{0C743CE7-E49C-47F8-BC53-13929EA5CDA3} = {ABCB8CF8-5E82-4C47-A0FC-E82DF105DF99}
{0C743CE7-E49C-47F8-BC53-13929EA5CDA3} = {ABCB8CF8-5E82-4C47-A0FC-E82DF105DF99}
{5EA0AFE3-134D-4573-B8E7-ADEC802722DF} = {0E6598D3-602D-4552-97F7-DC5AB458D553}
EndGlobalSection
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {A8EBEA58-739C-4DED-99C0-239779F57D5D}
SolutionGuid = {A8EBEA58-739C-4DED-99C0-239779F57D5D}
...
...
test/test_monitor/test_monitor.cpp
0 → 100644
View file @
4f3b52c6
#include "../../jlib/win32/monitor.h"
#include <stdio.h>
using
namespace
jlib
::
win32
;
int
main
()
{
auto
mis
=
getMonitors
();
printf
(
"total %zu monitors:
\n
"
,
mis
.
size
());
for
(
const
auto
&
mi
:
mis
)
{
wprintf
(
mi
.
toString
(
true
).
data
());
}
}
test/test_monitor/test_monitor.vcxproj
0 → 100644
View file @
4f3b52c6
<?xml version="1.0" encoding="utf-8"?>
<Project
DefaultTargets=
"Build"
xmlns=
"http://schemas.microsoft.com/developer/msbuild/2003"
>
<ItemGroup
Label=
"ProjectConfigurations"
>
<ProjectConfiguration
Include=
"Debug|Win32"
>
<Configuration>
Debug
</Configuration>
<Platform>
Win32
</Platform>
</ProjectConfiguration>
<ProjectConfiguration
Include=
"Release|Win32"
>
<Configuration>
Release
</Configuration>
<Platform>
Win32
</Platform>
</ProjectConfiguration>
<ProjectConfiguration
Include=
"Debug|x64"
>
<Configuration>
Debug
</Configuration>
<Platform>
x64
</Platform>
</ProjectConfiguration>
<ProjectConfiguration
Include=
"Release|x64"
>
<Configuration>
Release
</Configuration>
<Platform>
x64
</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup
Label=
"Globals"
>
<VCProjectVersion>
16.0
</VCProjectVersion>
<ProjectGuid>
{5EA0AFE3-134D-4573-B8E7-ADEC802722DF}
</ProjectGuid>
<RootNamespace>
testmonitor
</RootNamespace>
<WindowsTargetPlatformVersion>
10.0
</WindowsTargetPlatformVersion>
</PropertyGroup>
<Import
Project=
"$(VCTargetsPath)\Microsoft.Cpp.Default.props"
/>
<PropertyGroup
Condition=
"'$(Configuration)|$(Platform)'=='Debug|Win32'"
Label=
"Configuration"
>
<ConfigurationType>
Application
</ConfigurationType>
<UseDebugLibraries>
true
</UseDebugLibraries>
<PlatformToolset>
v142
</PlatformToolset>
<CharacterSet>
Unicode
</CharacterSet>
</PropertyGroup>
<PropertyGroup
Condition=
"'$(Configuration)|$(Platform)'=='Release|Win32'"
Label=
"Configuration"
>
<ConfigurationType>
Application
</ConfigurationType>
<UseDebugLibraries>
false
</UseDebugLibraries>
<PlatformToolset>
v142
</PlatformToolset>
<WholeProgramOptimization>
true
</WholeProgramOptimization>
<CharacterSet>
Unicode
</CharacterSet>
</PropertyGroup>
<PropertyGroup
Condition=
"'$(Configuration)|$(Platform)'=='Debug|x64'"
Label=
"Configuration"
>
<ConfigurationType>
Application
</ConfigurationType>
<UseDebugLibraries>
true
</UseDebugLibraries>
<PlatformToolset>
v142
</PlatformToolset>
<CharacterSet>
Unicode
</CharacterSet>
</PropertyGroup>
<PropertyGroup
Condition=
"'$(Configuration)|$(Platform)'=='Release|x64'"
Label=
"Configuration"
>
<ConfigurationType>
Application
</ConfigurationType>
<UseDebugLibraries>
false
</UseDebugLibraries>
<PlatformToolset>
v142
</PlatformToolset>
<WholeProgramOptimization>
true
</WholeProgramOptimization>
<CharacterSet>
Unicode
</CharacterSet>
</PropertyGroup>
<Import
Project=
"$(VCTargetsPath)\Microsoft.Cpp.props"
/>
<ImportGroup
Label=
"ExtensionSettings"
>
</ImportGroup>
<ImportGroup
Label=
"Shared"
>
</ImportGroup>
<ImportGroup
Label=
"PropertySheets"
Condition=
"'$(Configuration)|$(Platform)'=='Debug|Win32'"
>
<Import
Project=
"$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"
Condition=
"exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')"
Label=
"LocalAppDataPlatform"
/>
</ImportGroup>
<ImportGroup
Label=
"PropertySheets"
Condition=
"'$(Configuration)|$(Platform)'=='Release|Win32'"
>
<Import
Project=
"$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"
Condition=
"exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')"
Label=
"LocalAppDataPlatform"
/>
</ImportGroup>
<ImportGroup
Label=
"PropertySheets"
Condition=
"'$(Configuration)|$(Platform)'=='Debug|x64'"
>
<Import
Project=
"$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"
Condition=
"exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')"
Label=
"LocalAppDataPlatform"
/>
</ImportGroup>
<ImportGroup
Label=
"PropertySheets"
Condition=
"'$(Configuration)|$(Platform)'=='Release|x64'"
>
<Import
Project=
"$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"
Condition=
"exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')"
Label=
"LocalAppDataPlatform"
/>
</ImportGroup>
<PropertyGroup
Label=
"UserMacros"
/>
<PropertyGroup
Condition=
"'$(Configuration)|$(Platform)'=='Debug|Win32'"
>
<LinkIncremental>
true
</LinkIncremental>
</PropertyGroup>
<PropertyGroup
Condition=
"'$(Configuration)|$(Platform)'=='Debug|x64'"
>
<LinkIncremental>
true
</LinkIncremental>
</PropertyGroup>
<PropertyGroup
Condition=
"'$(Configuration)|$(Platform)'=='Release|Win32'"
>
<LinkIncremental>
false
</LinkIncremental>
</PropertyGroup>
<PropertyGroup
Condition=
"'$(Configuration)|$(Platform)'=='Release|x64'"
>
<LinkIncremental>
false
</LinkIncremental>
</PropertyGroup>
<ItemDefinitionGroup
Condition=
"'$(Configuration)|$(Platform)'=='Debug|Win32'"
>
<ClCompile>
<WarningLevel>
Level3
</WarningLevel>
<SDLCheck>
true
</SDLCheck>
<PreprocessorDefinitions>
_DEBUG;_CONSOLE;%(PreprocessorDefinitions)
</PreprocessorDefinitions>
<ConformanceMode>
true
</ConformanceMode>
</ClCompile>
<Link>
<SubSystem>
Console
</SubSystem>
<GenerateDebugInformation>
true
</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup
Condition=
"'$(Configuration)|$(Platform)'=='Debug|x64'"
>
<ClCompile>
<WarningLevel>
Level3
</WarningLevel>
<SDLCheck>
true
</SDLCheck>
<PreprocessorDefinitions>
_DEBUG;_CONSOLE;%(PreprocessorDefinitions)
</PreprocessorDefinitions>
<ConformanceMode>
true
</ConformanceMode>
</ClCompile>
<Link>
<SubSystem>
Console
</SubSystem>
<GenerateDebugInformation>
true
</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup
Condition=
"'$(Configuration)|$(Platform)'=='Release|Win32'"
>
<ClCompile>
<WarningLevel>
Level3
</WarningLevel>
<FunctionLevelLinking>
true
</FunctionLevelLinking>
<IntrinsicFunctions>
true
</IntrinsicFunctions>
<SDLCheck>
true
</SDLCheck>
<PreprocessorDefinitions>
NDEBUG;_CONSOLE;%(PreprocessorDefinitions)
</PreprocessorDefinitions>
<ConformanceMode>
true
</ConformanceMode>
</ClCompile>
<Link>
<SubSystem>
Console
</SubSystem>
<EnableCOMDATFolding>
true
</EnableCOMDATFolding>
<OptimizeReferences>
true
</OptimizeReferences>
<GenerateDebugInformation>
true
</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup
Condition=
"'$(Configuration)|$(Platform)'=='Release|x64'"
>
<ClCompile>
<WarningLevel>
Level3
</WarningLevel>
<FunctionLevelLinking>
true
</FunctionLevelLinking>
<IntrinsicFunctions>
true
</IntrinsicFunctions>
<SDLCheck>
true
</SDLCheck>
<PreprocessorDefinitions>
NDEBUG;_CONSOLE;%(PreprocessorDefinitions)
</PreprocessorDefinitions>
<ConformanceMode>
true
</ConformanceMode>
</ClCompile>
<Link>
<SubSystem>
Console
</SubSystem>
<EnableCOMDATFolding>
true
</EnableCOMDATFolding>
<OptimizeReferences>
true
</OptimizeReferences>
<GenerateDebugInformation>
true
</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile
Include=
"test_monitor.cpp"
/>
</ItemGroup>
<ItemGroup>
<ClInclude
Include=
"..\..\jlib\win32\monitor.h"
/>
</ItemGroup>
<Import
Project=
"$(VCTargetsPath)\Microsoft.Cpp.targets"
/>
<ImportGroup
Label=
"ExtensionTargets"
>
</ImportGroup>
</Project>
\ No newline at end of file
test/test_monitor/test_monitor.vcxproj.filters
0 → 100644
View file @
4f3b52c6
<?xml version="1.0" encoding="utf-8"?>
<Project
ToolsVersion=
"4.0"
xmlns=
"http://schemas.microsoft.com/developer/msbuild/2003"
>
<ItemGroup>
<Filter
Include=
"Source Files"
>
<UniqueIdentifier>
{4FC737F1-C7A5-4376-A066-2A32D752A2FF}
</UniqueIdentifier>
<Extensions>
cpp;c;cc;cxx;c++;def;odl;idl;hpj;bat;asm;asmx
</Extensions>
</Filter>
<Filter
Include=
"Header Files"
>
<UniqueIdentifier>
{93995380-89BD-4b04-88EB-625FBE52EBFB}
</UniqueIdentifier>
<Extensions>
h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd
</Extensions>
</Filter>
<Filter
Include=
"Resource Files"
>
<UniqueIdentifier>
{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}
</UniqueIdentifier>
<Extensions>
rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms
</Extensions>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile
Include=
"test_monitor.cpp"
>
<Filter>
Source Files
</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude
Include=
"..\..\jlib\win32\monitor.h"
>
<Filter>
Header Files
</Filter>
</ClInclude>
</ItemGroup>
</Project>
\ No newline at end of file
test/test_monitor/test_monitor.vcxproj.user
0 → 100644
View file @
4f3b52c6
<?xml version="1.0" encoding="utf-8"?>
<Project
ToolsVersion=
"Current"
xmlns=
"http://schemas.microsoft.com/developer/msbuild/2003"
>
<PropertyGroup
/>
</Project>
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment