Delphi Firemonkey Cross Platform — общий способ передачи дескриптора Windows

Я по колено в своем втором приложении Firemonkey для Windows и OSX и медленно преобразовываю свою библиотеку функций для решения кросс-платформенных проблем. Я пытаюсь создать общую функцию SelectDirectory, которая будет запускать специфичный для платформы код для Windows или OSX. У меня SelectDirectory отлично работает для обеих платформ, вызываемых по отдельности, но для конкретной Windows требуется дескриптор hwndparent для запуска.

Это выполняется в директиве IFDEF MSWINDOWS (точно так же, как OSX в директиве компилятора). Как я могу передать общий дескриптор этой функции или как я могу сослаться на Application.MainForm или что-то, что можно преобразовать в дескриптор Windows внутри этой функции? Я надеюсь избежать использования конкретных модулей Firemonkey в разделе использования этой библиотеки. Я бы предпочел каким-то образом передать THandle и преобразовать его в TWindowHandle внутри функции, но после часа работы над ним я не вижу, как это сделать без ущерба для полезности моей библиотеки.

Любая помощь приветствуется.


person Scott Lynn    schedule 15.08.2014    source источник
comment
THandle - это тип Windows, и я понятия не имею, что такое TWindowHandle.   -  person David Heffernan    schedule 15.08.2014


Ответы (1)


Используйте WindowHandleToPlatform, чтобы получить TWinWindowHandle для Windows, который свойство Wnd. Это собственный дескриптор окна (HWND).

person Ondrej Kelle    schedule 15.08.2014