123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326 |
- // AudioPlugInPropPage.cpp : implementation file
- //
- #include "stdafx.h"
- #include "resource.h"
- #include "AudioPlugInPropPage.h"
- #include <MedParam.h>
- #include "CakeMedParam.h"
- #include "Parameters.h"
- /////////////////////////////////////////////////////////////////////////////
- // CAudioPlugInPropPage property page
- extern HMODULE g_hInst;
- SPSEffectContext *g_fucko_ctx;
- CAudioPlugInPropPage::CAudioPlugInPropPage( IUnknown* pUnk, HRESULT* phr ) :
- CUnknown( "AudioPlugInPropPage", pUnk ),
- m_hWnd( NULL ),
- m_pMediaParams( NULL ),
- m_pUICallback( NULL ),
- m_pPageSite( NULL ),
- m_bDirty( FALSE )
- {
- SPS_initcontext(&m_ctx); //FUCKO
- g_fucko_ctx=&m_ctx;
- }
- /////////////////////////////////////////////////////////////////////////////
- CUnknown * WINAPI CAudioPlugInPropPage::CreateInstance(LPUNKNOWN lpunk, HRESULT *phr)
- {
- return new CAudioPlugInPropPage( lpunk, phr );
- }
- /////////////////////////////////////////////////////////////////////////////
- CAudioPlugInPropPage::~CAudioPlugInPropPage()
- {
- if (m_pMediaParams)
- m_pMediaParams->Release();
- m_pMediaParams = NULL;
-
- if (m_pUICallback)
- m_pUICallback->Release();
- m_pUICallback = NULL;
- }
- /////////////////////////////////////////////////////////////////////////////
- // CUnknown
- HRESULT CAudioPlugInPropPage::NonDelegatingQueryInterface( REFIID riid, void** ppv )
- {
- if (IID_IUnknown == riid)
- return GetInterface( (IUnknown*)this, ppv );
- else if (IID_IPropertyPage == riid)
- return GetInterface( (IPropertyPage*)this, ppv );
- else
- {
- *ppv = NULL;
- return E_NOINTERFACE;
- }
- }
- ////////////////////////////////////////////////////////////////////////////////
- // IPropertyPage
- HRESULT CAudioPlugInPropPage::GetPageInfo( LPPROPPAGEINFO pPageInfo )
- {
- IMalloc* pIMalloc;
- if (FAILED( CoGetMalloc( MEMCTX_TASK, &pIMalloc ) ))
- return E_FAIL;
- pPageInfo->pszTitle = (LPOLESTR)pIMalloc->Alloc( 256 );
- pIMalloc->Release();
- if (!pPageInfo->pszTitle)
- return E_OUTOFMEMORY;
- static const char szTitle[] = "AudioPlugIn";
- mbstowcs( pPageInfo->pszTitle, szTitle, strlen( szTitle ) );
- pPageInfo->size.cx = 100;
- pPageInfo->size.cy = 100;
- pPageInfo->pszDocString = NULL;
- pPageInfo->pszHelpFile = NULL;
- pPageInfo->dwHelpContext= 0;
- // Create the property page in order to determine its size
- HWND const hWnd = ::CreateDialogParam( g_hInst, MAKEINTRESOURCE( IDD_DIALOG1 ), GetDesktopWindow(), (DLGPROC)StaticDialogProc, 0 );
- if (hWnd)
- {
- // Get the dialog size and destroy the window
- RECT rc;
- GetWindowRect( hWnd, &rc );
- pPageInfo->size.cx = rc.right - rc.left;
- pPageInfo->size.cy = rc.bottom - rc.top;
- DestroyWindow( hWnd );
- }
- return S_OK;
- }
- ////////////////////////////////////////////////////////////////////////////////
- HRESULT CAudioPlugInPropPage::SetObjects( ULONG cObjects, LPUNKNOWN* ppUnk )
- {
- // Release old interfaces
- if (m_pMediaParams)
- m_pMediaParams->Release();
- m_pMediaParams = NULL;
- if (m_pUICallback)
- m_pUICallback->Release();
- m_pUICallback = NULL;
- // Look for a new IFilter
- ULONG cObj = 0;
- for (ULONG i = 0; i < cObjects; ++i)
- {
- if (S_OK == ppUnk[i]->QueryInterface( IID_IMediaParams, (void**)&m_pMediaParams ))
- {
- ppUnk[i]->QueryInterface( IID_IMediaParamsUICallback, (void**)&m_pUICallback );
- break;
- }
- }
- // Update controls if we've got a new object and we're activated
- if (m_pMediaParams && ::IsWindow( m_hWnd ))
- UpdateControls();
- return S_OK;
- }
- ////////////////////////////////////////////////////////////////////////////////
- extern BOOL CALLBACK SPS_configWindowProc(HWND hwndDlg, UINT uMsg, WPARAM wParam,LPARAM lParam);
- BOOL CALLBACK CAudioPlugInPropPage::StaticDialogProc( HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam )
- {
- #if 0
- CAudioPlugInPropPage* pPage;
- if (WM_INITDIALOG == uMsg)
- {
- SetWindowLong( hwnd, DWL_USER, lParam );
- pPage = reinterpret_cast<CAudioPlugInPropPage*>(lParam);
- if (!pPage)
- return TRUE;
- }
- pPage = reinterpret_cast<CAudioPlugInPropPage*>(GetWindowLong( hwnd, DWL_USER ));
- if (!pPage)
- return TRUE;
- return pPage->DialogProc( hwnd, uMsg, wParam, lParam );
- #endif
- return SPS_configWindowProc(hwnd, uMsg, wParam,lParam);
- }
- ////////////////////////////////////////////////////////////////////////////////
- BOOL CAudioPlugInPropPage::DialogProc( HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam )
- {
- //return SPS_configWindowProc(hwnd, uMsg, wParam,lParam);
- return 0;
- /* switch( uMsg )
- {
- case WM_INITDIALOG:
- m_hWnd = hwnd;
- break;
- default:
- return FALSE;
- }
- return TRUE;*/
- }
- ////////////////////////////////////////////////////////////////////////////////
- void CAudioPlugInPropPage::UpdateControls()
- {
- // TODO: update all UI elements to reflect new control state
- }
- ////////////////////////////////////////////////////////////////////////////////
- HRESULT CAudioPlugInPropPage::Activate( HWND hwndParent, LPCRECT pRect, BOOL fModal )
- {
- if (!pRect)
- return E_POINTER;
- if (NULL != m_hWnd)
- return E_UNEXPECTED; // already active!
- m_hWnd = CreateDialogParam( g_hInst, MAKEINTRESOURCE( IDD_DIALOG1 ), hwndParent, (DLGPROC)StaticDialogProc, (LPARAM)&m_ctx );
- if (!m_hWnd)
- return E_OUTOFMEMORY;
- // Refresh the property page controls
- UpdateControls();
- // Move page into position and show it
- Move( pRect );
- Show( SW_SHOWNORMAL );
- return S_OK;
- }
- ////////////////////////////////////////////////////////////////////////////////
- HRESULT CAudioPlugInPropPage::Move( LPCRECT pRect )
- {
- if (!pRect)
- return E_POINTER;
- if (NULL == m_hWnd)
- E_UNEXPECTED;
- MoveWindow( m_hWnd, pRect->left, pRect->top, pRect->right - pRect->left, pRect->bottom - pRect->top, TRUE );
- return S_OK;
- }
- ////////////////////////////////////////////////////////////////////////////////
- HRESULT CAudioPlugInPropPage::Show( UINT nCmdShow )
- {
- if (NULL == m_hWnd)
- E_UNEXPECTED;
- // Ignore wrong show flags
- if (nCmdShow != SW_SHOW && nCmdShow != SW_SHOWNORMAL && nCmdShow != SW_HIDE)
- return E_INVALIDARG;
- ShowWindow( m_hWnd, nCmdShow );
- if (SW_SHOWNORMAL == nCmdShow || SW_SHOW == nCmdShow)
- {
- // TODO: set the focus to which control needs it
- }
- return S_OK;
- }
- ////////////////////////////////////////////////////////////////////////////////
- HRESULT CAudioPlugInPropPage::Deactivate()
- {
- if (NULL == m_hWnd)
- return E_UNEXPECTED;
- DestroyWindow( m_hWnd );
- m_hWnd = NULL;
- return S_OK;
- }
- ////////////////////////////////////////////////////////////////////////////////
- HRESULT CAudioPlugInPropPage::SetPageSite( LPPROPERTYPAGESITE pPageSite )
- {
- if (pPageSite)
- {
- if (m_pPageSite)
- return E_UNEXPECTED;
- m_pPageSite = pPageSite;
- m_pPageSite->AddRef();
- }
- else
- {
- if (m_pPageSite == NULL)
- return E_UNEXPECTED;
- m_pPageSite->Release();
- m_pPageSite = NULL;
- }
- return S_OK;
- }
- ////////////////////////////////////////////////////////////////////////////////
- HRESULT CAudioPlugInPropPage::Apply()
- {
- // Take no action except clearing the dirty flag.
- // So that the property page may be used in realtime, all user interface
- // changes are immediately passed to the filter. I.e. there is no Cancel.
- m_bDirty = FALSE;
- return S_OK;
- }
- ////////////////////////////////////////////////////////////////////////////////
- HRESULT CAudioPlugInPropPage::IsPageDirty( void )
- {
- return m_bDirty ? S_OK : S_FALSE;
- }
- /////////////////////////////////////////////////////////////////////////////
- HRESULT CAudioPlugInPropPage::Help( LPCWSTR lpszHelpDir )
- {
- // Get location of DLL
- char szDLL[ _MAX_PATH ];
- if (0 == ::GetModuleFileName( g_hInst, szDLL, sizeof szDLL ))
- return E_FAIL;
-
- // Convert to location of .HLP file
- char szHelp[ _MAX_PATH ];
- ::strncpy( szHelp, szDLL, ::strlen( szDLL ) - 3 );
- ::strcat( szHelp, "HLP" );
- // Call help
- if (::WinHelp( m_hWnd, szHelp, HELP_CONTENTS, NULL ))
- return S_OK;
- return E_FAIL;
- }
- /////////////////////////////////////////////////////////////////////////////
- HRESULT CAudioPlugInPropPage::TranslateAccelerator( LPMSG lpMsg )
- {
- return E_NOTIMPL;
- }
- /////////////////////////////////////////////////////////////////////////////
|