Ваш пиксель перезаписывается другим значением цвета другим приложением.По сути, какое бы окно ни занимало пиксель в 200,400
, определяется цвет этого пикселя.
Если вы используете бесконечный цикл, подобный следующему:
while (true) {
COLORREF result = SetPixel(
hdc,
x,
y,
RGB(255, 0, 0)
);
if (result == -1) {
std::cout << "FAIL: SetPixel";
return 1;
}
else
std::cout << "Set color pixel: " << result << std::endl;
}
, вы можете увидеть свой пиксель, в зависимости от когда ваш код обновляет пиксель и когда приложение под этим пикселем обновляет его.
Я попробовал ваш код с бесконечным циклом и установил MS Paint в соответствующую координатуи смог увидеть пиксель.
В любом случае, то, что вы делаете, крайне ненадежно, поскольку вы никогда не узнаете, что другие приложения делают с контекстом устройства.Лучше всего создать и использовать окно, которое принадлежит вашему приложению.
Вот снимок экрана:
Как толькоЯ закрываю приложение или приостанавливаю его в отладчике или прекращаю цикл любым другим способом, Paint снова устанавливает пиксель в белый цвет.