+static LRESULT WINAPI
+vstedit_wndproc (HWND w, UINT msg, WPARAM wp, LPARAM lp)
+{
+ switch (msg) {
+ case WM_KEYUP:
+ case WM_KEYDOWN:
+ break;
+
+ case WM_SIZE:
+#ifdef PLATFORM_WINDOWS
+ {
+ LRESULT rv = DefWindowProcA (w, msg, wp, lp);
+ RECT rect;
+ GetClientRect(w, &rect);
+#ifndef NDEBUG
+ printf("VST WM_SIZE.. %ld %ld %ld %ld\n", rect.top, rect.left, (rect.right - rect.left), (rect.bottom - rect.top));
+#endif
+ VSTState* fst = (VSTState*) GetProp (w, "fst_ptr");
+ if (fst) {
+ int32_t width = (rect.right - rect.left);
+ int32_t height = (rect.bottom - rect.top);
+ if (width > 0 && height > 0) {
+ fst->amc (fst->plugin, 15 /*audioMasterSizeWindow */, width, height, NULL, 0);
+ }
+ }
+ return rv;
+ }
+#endif
+ break;
+ case WM_CLOSE:
+ /* we don't care about windows closing ...
+ * WM_CLOSE is used for minimizing the window.
+ * Our window has no frame so it shouldn't ever
+ * get sent - but if it does, we don't want our
+ * window to get minimized!
+ */
+ return 0;
+ break;
+
+ case WM_DESTROY:
+ case WM_NCDESTROY:
+ /* we don't care about windows being destroyed ... */
+ return 0;
+ break;
+
+ default:
+ break;
+ }