Мы пытаемся преобразовать часть кода C ++, написанного на MFC, который использует метод CWnd.SubclassWindow, в код Borland C ++ Builder. Кто-нибудь знает, как сделать подкласс (подкласс с объектом TForm) - мы полностью застряли. Любые указатели будут высоко оценены! ТИА!
Особенности:
У нас есть существующий базовый класс, написанный на Borland C ++, который наследуется от TForm, который используется для придания всем формам, которые наследуют от него, определенного внешнего вида (например, он обрабатывает WM_NCPAINT и WM_NCHITTEST).
Теперь мы хотели бы использовать этот код, чтобы придать формам, написанным на других языках (точнее, MSVC ++ / MFC и C #), тот же внешний вид.
Вместо того, чтобы переписывать весь код, мы подумали, что использование подклассов Windows было бы отличной идеей. Затем мы можем поместить весь существующий и протестированный код в DLL, а затем просто вызвать его с помощью hWnd, и это окно автоматически получит новый внешний вид.
Точно, почему это так невозможно, я не могу сказать - я сам не пишу код на Borland C ++. Я написал заглушку в MFC всего за несколько минут, чтобы показать разработчикам Borland C ++ то, что я хотел, и они потратили дни, пытаясь имитировать метод MFC CWnd :: SubclassWindow без успеха.
Из того, что я понимаю, проблема в том, что когда вы выполняете "new TForm ()", автоматически создается новое окно, прежде чем вы сможете его остановить. Таким образом, замена WindowProc работает НО нежелательное окно TForm перемещается по экрану без толку !!!!