Figure 3: Cache the Work Area
Continued from Figure 2: The Virtual Desktop
This code snippet caches the work area of every monitor for later use.
// global variables to store work area
int gCount;
LPRECT gpRectArray = NULL;
void CacheWorkAreas()
{
// set the counter to 0
gCount = 0;
// delete old array, since number of monitors may
// have changed
delete [] gpRectArray;
// allocate a new array sized to the number of monitors
gpRectArray = new RECT[GetSystemMetrics(SM_CMONITORS)];
EnumDisplayMonitors(NULL, NULL, monitorEnumInfoProc, 0);
}
// definition of callback function
BOOL CALLBACK monitorEnumProc(
HMONITORhmonitor,
HDChdcMonitor,
LPRClprcMonitor,
DWORDdwData)
{
MONITORINFO mi;
mi.cbSize = sizeof(mi)
GetMonitorInfo(hmonitor, &mi);
*gpRectArray[gCount] = mi.rcWork;
gCount++;
}
Published as Power Programming in the 4/7/98 issue of PC Magazine.
博客给出一段代码,用于缓存每个显示器的工作区域。定义了全局变量存储工作区域,在 CacheWorkAreas 函数中处理旧数组的删除和新数组的分配,还定义了回调函数 monitorEnumProc 来获取并存储工作区域信息。

1705

被折叠的 条评论
为什么被折叠?



