编辑:通过不工作我的意思是在我的主阵列中,mA中的mA没有显示数组中元素的任何变化。
我一直在检查我的功能,因为我开发了标题并且它们已经完美运行:直到我到达最终标题MonitorArray.h
。
mA.getScreen(ⅰ).checkScreen();
没有工作,我无法理解为什么。所以我在MonitorArray
内创建了一个新函数来使用相同的函数完成类似的工作,令我惊讶的是它有效。
mA.pollScreens();
使用(Inside MonitorArray.h):
monitorArray[i].checkScreen();
功能getScreen:
ScreenArray MonitorArray::getScreen(int arrayPointer)
{
if (arrayPointer<0 || arrayPointer>=monitors)
{
return false;
}
else
{
return monitorArray[arrayPointer];
}
}
功能checkScreen和addArray:
void ScreenArray::checkScreen()
{
HDC dMonitor;
PixelArray pArray;
int lenX = 0, lenY = 0;
dMonitor = CreateDC(iMonitor.szDevice, iMonitor.szDevice, NULL, NULL);
lenX = (iMonitor.rcWork.right - iMonitor.rcWork.left) - 1;
lenY = (iMonitor.rcWork.bottom - iMonitor.rcWork.top) - 1;
pArray.setColour(0, GetPixel(dMonitor, 0, 0));
pArray...
...
...
addArray(&pArray);
ReleaseDC(NULL, dMonitor);
}
void ScreenArray::addArray(PixelArray* pA)
{
if (previousCheck(*pA))
{
arrayPosition = 0;
screenArray[arrayPosition] = *pA;
arrayPosition++;
}
else
{
screenArray[arrayPosition] = *pA;
arrayPosition++;
}
if (arrayPosition==11)
{
//Run screen saver on monitor
}
}
为什么通过新函数在头文件中运行命令,但是从main运行函数?
答案 0 :(得分:1)
假设“不起作用”意味着“不影响ScreenArray
中的MonitorArray
”,这是因为getScreen
会返回副本数组元素
ScreenArray MonitorArray::getScreen(int arrayPointer)
虽然新成员函数很可能直接使用数组。
您需要返回指向数组元素的指针:
ScreenArray* MonitorArray::getScreen(int arrayPointer)
{
if (arrayPointer<0 || arrayPointer>=monitors)
{
return NULL;
}
else
{
return &monitorArray[arrayPointer];
}
}
(顺便说一句:从bool
到ScreenArray
的隐式转换看起来很奇怪。)