From abcb79a75c9d5784f41260d25fdd0029641cb968 Mon Sep 17 00:00:00 2001 From: Thomas Grill Date: Sun, 23 Feb 2003 00:09:18 +0000 Subject: "" svn path=/trunk/; revision=423 --- externals/grill/vst/src/PopupWindow.cpp | 126 ++++++++++++++++++++++++++++++++ 1 file changed, 126 insertions(+) create mode 100644 externals/grill/vst/src/PopupWindow.cpp (limited to 'externals/grill/vst/src/PopupWindow.cpp') diff --git a/externals/grill/vst/src/PopupWindow.cpp b/externals/grill/vst/src/PopupWindow.cpp new file mode 100644 index 00000000..35c30a81 --- /dev/null +++ b/externals/grill/vst/src/PopupWindow.cpp @@ -0,0 +1,126 @@ +// PopupWindow.cpp : implementation file +// + +#include "main.h" +#include "vst.h" +#include "PopupWindow.h" +#include "EditorThread.h" +#include "VstHost.h" + +#ifdef _DEBUG +#define new DEBUG_NEW +#undef THIS_FILE +static char THIS_FILE[] = __FILE__; +#endif + +extern CVstApp *theApp; + +///////////////////////////////////////////////////////////////////////////// +// CPopupWindow + +IMPLEMENT_DYNCREATE(CPopupWindow, CFrameWnd) + +CPopupWindow::CPopupWindow(): + plug(NULL) +{} + +CPopupWindow::~CPopupWindow() +{ + plug->OnEditorClose(); +} + + +BEGIN_MESSAGE_MAP(CPopupWindow, CFrameWnd) + //{{AFX_MSG_MAP(CPopupWindow) + ON_WM_ENTERIDLE() + ON_WM_TIMER() + ON_WM_MOVE() + ON_WM_CLOSE() + //}}AFX_MSG_MAP +END_MESSAGE_MAP() + +///////////////////////////////////////////////////////////////////////////// +// CPopupWindow message handlers + +void CPopupWindow::OnEnterIdle(UINT nWhy, CWnd* pWho) +{ + CFrameWnd::OnEnterIdle(nWhy, pWho); + + // TODO: Add your message handler code here + if(plug) plug->EditorIdle(); +} + +void CPopupWindow::SetPlugin(VSTPlugin *p) +{ + plug = p; + + char tmp[256]; + sprintf(tmp,"vst~ - %s",plug->GetName()); + + CreateEx( WS_EX_DLGMODALFRAME,AfxRegisterWndClass(CS_DBLCLKS),tmp,WS_CAPTION|WS_THICKFRAME|WS_POPUP|WS_SYSMENU,0,0,0,0,NULL,NULL,NULL); + + plug->Dispatch(effEditOpen , 0 , 0 , m_hWnd , 0.0f ); + RECT r = plug->GetEditorRect(); +/* + CString str = theApp->GetProfileString( "VSTPos" , plug->GetName() , "10,10"); + int idx = str.Find(","); + CString x = str.Left( idx ); + CString y = str.Right( idx ); + printf(" index is %d left is %s and right is %s" , idx , x , y); +*/ + SetWindowPos(&wndTopMost,plug->getX(),plug->getY(),(r.right - r.left) + 10 , r.bottom - r.top + 30 , SWP_SHOWWINDOW); + + DoInit(); + ShowWindow( SW_SHOW ); + BringWindowToTop(); +// SetFocus(); +} + + +//DEL BOOL CPopupWindow::Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext) +//DEL { +//DEL // TODO: Add your specialized code here and/or call the base class +//DEL +//DEL return CWnd::Create(lpszClassName, lpszWindowName, dwStyle, rect, pParentWnd, nID, pContext); +//DEL } + +void CPopupWindow::DoInit() +{ +// printf("DoInit\n"); + plug->Dispatch(effEditTop,0,0, 0,0.0f); +// printf("Dispatched to the top\n"); + SetTimer(0,25,NULL); +} + +void CPopupWindow::OnTimer(UINT nIDEvent) +{ + plug->Dispatch(effEditIdle, 0, 0, NULL, 0.0f); + CFrameWnd::OnTimer(nIDEvent); +} + +void CPopupWindow::OnMove(int x, int y) +{ + CFrameWnd::OnMove(x, y); + if(plug) plug->setPos(x,y); +/* + { + char buf[100]; + sprintf( buf , "%d,%d" , x , y ); + theApp->WriteProfileString( "VSTPos" , plug->GetName() , buf ); + } +*/ +} + + +//DEL void CPopupWindow::OnFinalRelease() +//DEL { +//DEL // +//DEL CFrameWnd::OnFinalRelease(); +//DEL } + +void CPopupWindow::OnClose() +{ + // TODO: Add your message handler code here and/or call default + plug->StopEditing(); + CFrameWnd::OnClose(); +} -- cgit v1.2.1