Рейтинг:
2
steveb
struct RECT, возвращаемый из GetWindowRect (), также может быть дополнительно обработан вызовом:
GetClientRect()
ScreenToClient()
ClientToScreen()
Твой голос звучит как один из тех случаев
Было бы полезно, если бы вы разместили размеры своей прямой кишки. Если вверху и слева оба == 0, то это координаты клиента, а если они выше нуля, то это координаты экрана.
Вы также должны обратить внимание на свое координатное пространство и функции преобразования:
[^]
lacir
реальные размеры 600х465
GetClientRect() возвращает в отладчике {LT(0, 0) RB(480, 372) [480 x 372]}
ClientToScreen(hwnd элемента, оператора reinterpret_cast&ЛТ;точка*&ГТ;(&амп;водонепроницаемые.слева)); {{Л(72, 0) РБ(480, 372) [408 х 372]}}
ClientToScreen(hwnd элемента, оператора reinterpret_cast&ЛТ;точка*&ГТ;(&амп;водонепроницаемые.справа)); {Л(72, 0) РБ(552, 372) [480 х 372]}
но площадь все еще меньше 480 x 372 без учета ClientToScreen() его заданного GetClientRect
Richard MacCutchan
В вашем первоначальном вопросе вы используете GetWindowRect, в этом-GetClientRect. Вам нужно понять разницу между этими двумя функциями.
lacir
Оба возвращают одинаковый размер 480x372, просто
GetWindowRect возвращает без позиционного сдвига координаты LT отличаются от 0 {LT(95, 310) RB(575, 682) [480 x 372]}
Richard MacCutchan
Что бы вы ни делали, с вашим кодом что-то не так. Если любой из этих методов вернет неверные значения, то более 90% всех приложений Windows перестанут работать.
Richard MacCutchan
У меня есть сильное подозрение, что вы получаете неправильную ручку окна.
steveb
Дважды проверьте, что вы создаете функции CreateWindow (). Windows имеет древовидную композицию, то есть можно создавать вложенные окна внутри родительского окна, вызывая CreateWindow() с дескриптором родительского окна. Если это так, то ваш шпион может сосредоточиться на другом окне. Изучите дерево в вашем шпионском приложении
lacir
Хорошо, я проверил с помощью Spy++ visual studio, он имеет правильный размер, проблема заключается в GetClientRect (), прежде чем я использовал реализацию Spy++ с этого сайта, и она показывает неправильно.
steveb
Вы можете проверить исходный код?
Рейтинг:
0
KarstenK
Я думаю, что у вас есть какой-то изъян в вашем коде или логике. Прочитайте Документация GetWindowRect и попробуйте пример кода. Может быть, ваша проблема заключается в понимании некоторых не клиентская зона.
Убедитесь, что вы вызываете правильный параметр, особенно дескриптор окна.
KarstenK
Покрасьте свое окно каким - нибудь цветом, чтобы увидеть разницу. Чем проверить другую область. Найди свою ошибку ;-)