GetWindowRect имеет смещение в Windows 10

Я использую GetWindowRect в своей программе, чтобы получить координаты окна на рабочем столе. Это отлично работает на дюжине ПК, которые у меня есть для тестирования (XP-W8.1), но не на моем ПК W10 с сенсорным экраном: координаты смещены в верхний левый угол. Я погуглил и на ошибку в Windows 10, и на что-то, связанное с монитором, но ничего не могу найти, но это похоже на часто используемую функцию, и проблему легко воспроизвести.

У кого-нибудь есть какие-нибудь подсказки?

Код, упрощенный:

hwnd = FindWindow(NULL, windowname);
if (hwnd) {
  TRect r;
  GetWindowRect(hwnd, &r);
}
HWND hdt = GetDesktopWindow();
HDC dcdt = GetWindowDC(hdt);
// bitblt canvas to get window (won't work for high DPI setting)

Ответы на вопрос(1)

Ваш ответ на вопрос