5 changed files with 54 additions and 1 deletions
@ -0,0 +1,42 @@ |
|||
#include "common.h" |
|||
|
|||
class Screens : public ComSingleObject<IAvnScreens, &IID_IAvnScreens> |
|||
{ |
|||
public: |
|||
|
|||
virtual HRESULT GetScreenCount (int* ret) |
|||
{ |
|||
*ret = (int)[NSScreen screens].count; |
|||
|
|||
return S_OK; |
|||
} |
|||
|
|||
virtual HRESULT GetScreen (int index, AvnScreen* ret) |
|||
{ |
|||
if(index < 0 || index >= [NSScreen screens].count) |
|||
{ |
|||
return E_INVALIDARG; |
|||
} |
|||
|
|||
auto screen = [[NSScreen screens] objectAtIndex:index]; |
|||
|
|||
ret->Bounds.X = [screen frame].origin.x; |
|||
ret->Bounds.Y = [screen frame].origin.y; |
|||
ret->Bounds.Height = [screen frame].size.height; |
|||
ret->Bounds.Width = [screen frame].size.width; |
|||
|
|||
ret->WorkingArea.X = [screen visibleFrame].origin.x; |
|||
ret->WorkingArea.Y = [screen visibleFrame].origin.y; |
|||
ret->WorkingArea.Height = [screen visibleFrame].size.height; |
|||
ret->WorkingArea.Width = [screen visibleFrame].size.width; |
|||
|
|||
ret->Primary = index == 0; |
|||
|
|||
return S_OK; |
|||
} |
|||
}; |
|||
|
|||
extern IAvnScreens* CreateScreens() |
|||
{ |
|||
return new Screens(); |
|||
} |
|||
Loading…
Reference in new issue