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.
Trackback: http://tb.blog.youkuaiyun.com/TrackBack.aspx?PostId=3521
本文介绍了在Windows98环境中为多个显示器进行编程的方法。通过使用特定的API和技巧,可以实现工作区域缓存等功能,便于开发者后续使用。文中详细解释了如何遍历所有显示器并获取其工作区域。
965

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



