Программирование - это способ делать хорошие вещи не изводя при этом древесину и клей. Однако, программы при этом принято описывать сухим языком спецификаций, что совершенно неверно. Хорошие вещи не описывают, о них рассказывают. Об очень хороших вещах - даже шепотом. История радара Radar.exe родился как инструмент для отладки 3D движка. Надо было видеть на экране положение нескольких точек и видеть, как оно изменяется. Очень простая задача, но в рамках самого движка ее решить было невозможно. Хотя бы потому, что встроеный отладчик на каждом шаге закрывает окно программы. Потому пришлось сделать некое подобие "шпиона", но на OpenGL. На внедрение программы ушло минут пять. Все очень просто, если понимать как она сделана. Есть стек точек, которые отображаются на экране. Для каждой точки задаются: цвет и положение. Потом экран можно центровать по какой-нибудь из них, или по центру занимаемого ими объема. Цвет одновременно является и маркером точки в стеке. То есть, координаты точки можно узнать, навевшись на нее курсором, но если в стеке есть хотя бы еще одна точка с таким же цветом, полученным координатам доверять уже нелзя. Для реального времени, можно отключить отрисовку точек в момент смены их координат, это защитит от мигания. Вот пример, который выводит на радар три точки. HWND a=(HWND)5506184; // При запуске отладчика его HWND автоматически в клипборде SendMessage(a,WM_USER,'D',0); // Отключение отрисовки, чтобы не мигало во время исполнения. SendMessage(a,WM_USER,0,0); // Очистка списка точек. Обнуление счетчика. SendMessage(a,WM_USER,'X',10); // X SendMessage(a,WM_USER,'Y',10); // Y SendMessage(a,WM_USER,'Z',10); // Z SendMessage(a,WM_USER,'R',255); // Red SendMessage(a,WM_USER,'G',128); // Green SendMessage(a,WM_USER,'B',255); // Blue SendMessage(a,WM_USER,1,0); // Добавление точки, инкрементация счетчика. SendMessage(a,WM_USER,'X',20); SendMessage(a,WM_USER,'Y',10); SendMessage(a,WM_USER,'Z',10); SendMessage(a,WM_USER,'R',128); SendMessage(a,WM_USER,'G',128); SendMessage(a,WM_USER,'B',0); SendMessage(a,WM_USER,1,0); SendMessage(a,WM_USER,'X',10); SendMessage(a,WM_USER,'Y',20); SendMessage(a,WM_USER,'Z',10); SendMessage(a,WM_USER,'R',0); SendMessage(a,WM_USER,'G',128); SendMessage(a,WM_USER,'B',255); SendMessage(a,WM_USER,1,0); SendMessage(a,WM_USER,'C',0); // Центрирование по 0 - центр, 1..n - по точке. SendMessage(a,WM_USER,'P',1); // Центрирование координатной системы. Такое же. SendMessage(a,WM_USER,'S',-1); // Масштабирование координат битовым сдвигом. SendMessage(a,WM_USER,'D',1); // Включение отрисовки. Управление внутри самого радара тривиально. Три поворота, три сдвига. "WSAD" + "TFGH" + клавиши курсора. Это простая и надежная программка. Она будет доделываться по мере надобности, но пока она нас вполне устраивает. Через три дня после ее внедрения, отладка коллижна была закончена. akalenuk