int CQueryDlg3::Index (COLORREF Color)
{
BYTE R = GetRValue(Color);
BYTE G = GetRValue(Color);
BYTE B = GetRValue(Color);
double mindis = 1000;
int m;
for (int i = 0; i < mapdatanum; i++)
{
double tmpdis = sqrt((R - mapdata[i].R)*(R - mapdata[i].R)
+ (G - mapdata[i].G)*(G - mapdata[i].G)
+ (B - mapdata[i].B)*(B - mapdata[i].B));
if (tmpdis < mindis)
{
mindis = tmpdis;
m = i;
}
}
if (mindis < 10)
return m;
else return 1000;
}
问题出在ctrl复制了第一行的BYTE R = GetRValue(Color);
但是后面函数没有将R改成GetGValue GetBValue
这个问题的debug耗时接近3个小时
但是学会了很多东西
比如如何加断点
如何在timer函数中让程序停下
如下
/*
if(abs(NewX - 531) + abs(NewY - 70) < 20)
{
int a = 0;/////////test
}*/
让鼠标在相应位置时timer函数停下跟踪
十分有用!
本文详细探讨了颜色匹配算法实现中的一个关键问题及其解决过程,包括如何使用断点进行有效调试、理解鼠标事件与定时器交互,以及如何在特定条件下暂停程序以进行深入分析。通过实例代码分析,读者可以学习到颜色处理、调试技巧和事件处理等知识点。
1251

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



