Whether it's WPF, WinForms, WinRT, or whatever the new flavour of the day is, it's always a layer on top. And that layer is never perfect, because you still have to do the occasional [DllImport("Kernel32.dll")] interop reference.
Here are the currently supported ways to deal with windows on Windows:
* HWND
* System.Windows.Window
* Windows.UI.Xaml.Window
On OSX, you use Cocoa. When Apple introduced Swift, they didn't have to layer on top of the API accessed by ObjC. When you write Swift code, you call the exact same APIs as you would have done with your ObjC code.
Here are the currently supported ways to deal with windows on the Mac:
* NSWindow