DEVMODE devMode; devMode.dmSize=sizeof(DEVMODE); devMode.dmDriverExtra=0; EnumDisplaySettings(NULL, ENUM_CURRENT_SETTINGS, &devMode); |
Display* dsp; int screen=DefaultScreen(dsp); int width = DisplayWidth(dsp,screen); int height = DisplayHeight(dsp,screen); |
#define UNICODE #include<windows.h> //要用的變數和struct BOOL ret; DISPLAY_DEVICE displayDevice; displayDevice.cb=sizeof(DISPLAY_DEVICE); DEVMODE devMode; devMode.dmSize=sizeof(DEVMODE); devMode.dmDriverExtra=0; for(int i=0;;i++){ ret=EnumDisplayDevices(NULL,i,&displayDevice,0); //傳回false代表i>目前螢幕數量,所有螢幕都檢查完了 if(!ret){ break; } if(!(displayDevice.StateFlags & DISPLAY_DEVICE_ACTIVE)){ continue; } EnumDisplaySettings(displayDevice.DeviceName, ENUM_CURRENT_SETTINGS, &devMode); int isPrimaryScreen = (displayDevice.StateFlags&DISPLAY_DEVICE_PRIMARY_DEVICE); /* 此時devMode.dmPosition.x、devMode.dmPosition.y、devMode.dmPelsWidth、devMode.dmPelsHeight就是螢幕範圍了 在這裡檢查視窗是否在螢幕裡 另外有對主螢幕做特別處理 */ } |
#include<X11/extensions/Xrandr.h> Display* dsp; Window window; int number; XRRMonitorInfo* monitorInfo=XRRGetMonitors(dsp, window, 1, &number); //此時number是螢幕數量,跑迴圈檢查各個螢幕 for(int i=0;i<number;i++){ XRRMonitorInfo* tempInfo=monitorInfo+i; /* 此時tempInfo->x、tempInfo->y、tempInfo->width、tempInfo->height是螢幕範圍 tempInfo->primary是是否為主螢幕 在此檢查視窗是否在螢幕裡 */ } |
HWND window; //初始化時建好的視窗handle int screenRect[4]; //用上面的方法求出螢幕的範圍 SetWindowLongPtr(window, GWL_STYLE, WS_POPUP|WS_VISIBLE); SetWindowPos(window, 0, 0,0,0,0, SWP_NOSIZE|SWP_NOZORDER|SWP_NOMOVE|SWP_FRAMECHANGED); //沒有上面這行滑鼠坐標會錯 SetWindowPos(window, HWND_TOP, screenRect[0],screenRect[1],screenRect[2],screenRect[3], 0); |
活動與參展 (0)
└活動與參展資訊 (1)
└活動與製作後記 (11)
└販售會遊戲團調查 (14)
遊戲團隊「電子妖精實驗室」 (0)
└重要消息 (4)
└Cyber Sprite遊戲秘密 (2)
└製作進度 (26)
創作 (0)
└繪圖 (24)
└程式 (51)
└故事、劇本 (3)