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   )
     {
         / / 没找到第二显示器,随便判断一下,不严格

猜你喜欢

转载自blog.csdn.net/jennyvenus/article/details/42027043