BlitBit wrote:[*] Which methods are called in which order (only a coarse overview)?
Host should first call getRect(), then open(void*).
[*] What are the parameters to these methods? In the headers I saw some void pointers going around in some methods. I assume that this is a HWND on Windows?
You get HWND and NSView as parameter for open() depending on platform.
[*] Does the host provide the parent window that my VST GUI window needs to become a child of or does it provide the window that my VST can directly paint on?
You want to use the window that you get as the parent (eg. superview or parent HWND) for the editor window (or "view" in Cocoa) that you create. You can then either build the UI into that editor window/view, or use it as a parent for further windows.
If you do everything in one window/view, then that's all you need, but in some hosts you can run into problems if you add more than one child to the host window, so if your editor code involves more than one window/view, you still want just one "editor" window/view that can then acts as the parent for rest of your GUI hierarchy.
[*] What's the type of the void pointer on Mac and Linux?
NSView to use as a superview for the view you create.
[*] How can I communicate to the host that my window size has changed / needs to be changed? Both approaches would work for me: providing some predefined sizes or using dynamic resizing with a handle.[/list]
In theory you just call resizeWindow() on the plugin (and in theory this works even if you do it in response to some mouse-dragging, but in practice I've noticed some issues doing this). In practice it works "most of the time" in "most hosts" sometimes depending on weird stuff like whether the plugin editor has it's own window or embedded into another window (eg. Reaper can do both and IIRC resize only works reliably when it's on it's own window). Usually closing and reopening the editor will work even in hosts having problems though.
You might also want to update the rectangle as returned by getRect() so that the window will reopen with the correct size and also resize the actual window you've created (eg. SetWindowPos() on windows), since host will normally only resize the parent that contains the editor, not the editor itself.