首页 > 代码库 > vc6中 EnumDisplayDevices 判断扩展屏幕,以及取得扩展屏幕的示例代码。
vc6中 EnumDisplayDevices 判断扩展屏幕,以及取得扩展屏幕的示例代码。
#define SM_CMONITORS 80
// int screen_count = ::GetSystemMetrics( SM_CMONITORS );
BOOL EnumDisplayDevices(
LPCTSTR lpDevice, // device name
DWORD iDevNum, // display device
PDISPLAY_DEVICE lpDisplayDevice, // device information
DWORD dwFlags // reserved
);
typedef BOOL ( __stdcall * pEnumDiaplayDevices )( LPCTSTR lpDevice, // device name
DWORD iDevNum, // display device
PDISPLAY_DEVICE lpDisplayDevice, // device information
DWORD dwFlags // reserved
);
int
GetScreenRect( int ScreenNo, RECT *rect )
{
pEnumDiaplayDevices xenum;
BOOL flag;
DISPLAY_DEVICE dd;
ZeroMemory( &dd, sizeof( dd ) );
dd.cb = sizeof( dd );
HMODULE hhh = LoadLibrary( _T( "user32.dll" ) );
if( hhh )
{
xenum = ( pEnumDiaplayDevices )GetProcAddress( hhh, "EnumDisplayDevicesW" );
}
if( !xenum )
{
FreeLibrary( hhh );
return 1;
}
//flag = EnumDisplayDevices( NULL, ScreenNo, &dd, 0 );
flag = xenum( NULL, ScreenNo, &dd, 0 );
if( !flag )
{
FreeLibrary( hhh );
return 1;
}
DEVMODE dm;
ZeroMemory( &dm, sizeof( dm ) );
dm.dmSize = sizeof( dm );
flag = EnumDisplaySettings( dd.DeviceName, ENUM_CURRENT_SETTINGS, &dm );
rect->left = dm.dmPosition.x;
rect->top = dm.dmPosition.y;
rect->right = dm.dmPelsWidth;
rect->bottom = dm.dmPelsHeight;
FreeLibrary( hhh );
return 0;
}
//*************************
// 简单测试代码
//*************************
RECT rec;
int result = GetScreenRect( 1, &rec );
if( rec.left == rec.right )
{
// 没找到第二显示器,随便判断一下,不严格
vc6中 EnumDisplayDevices 判断扩展屏幕,以及取得扩展屏幕的示例代码。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。