📄 rmprop.cpp
字号:
//
// RTSP Property Page
//////////////////////////////////////////////////////////////////
#include "rtspprop.h"
//
//////////////////////////////////////////////////////////////////
CUnknown * WINAPI CRTSPPropertyPage::CreateInstance(LPUNKNOWN lpunk, HRESULT *phr)
{
CUnknown *punk = new CRTSPPropertyPage(TEXT("RTSP Property Page"), lpunk);
if (punk == NULL) {
*phr = E_OUTOFMEMORY;
}
return punk;
}
//////////////////////////////////////////////////////////////////
CRTSPPropertyPage::CRTSPPropertyPage(TCHAR *pName, LPUNKNOWN pUnk) :
CBasePropertyPage(pName, pUnk, IDD_PROPPAGE_SMALL, IDS_RTSPTITLE)
{
InitValues();
}
//////////////////////////////////////////////////////////////////
CRTSPPropertyPage::~CRTSPPropertyPage()
{
if(m_pPropConnParams->sSessionId[0] == '\0')
{ //if no session is active, initialize the rtsp
PHOSTENT g_temphost;
char g_sHost[1024];
struct sockaddr_in g_dest;
gethostname(g_sHost, 1024);
g_temphost = gethostbyname(g_sHost);
memcpy(&(g_dest.sin_addr), g_temphost->h_addr_list[0], g_temphost->h_length);
// initialize the connection parameters
int iUserPort = 5004;
int iRtpPort = 5006;
IRtsp_Initialize(m_pIRtsp, m_pPropConnParams, inet_ntoa(g_dest.sin_addr), iUserPort, iRtpPort);
}
m_pRMSourceStream->SetUpThreadProc();
ASSERT(m_pRMSourceStream);
m_pRMSourceStream->Release();
m_pRMSourceStream = NULL;
}
//////////////////////////////////////////////////////////////////
HRESULT CRTSPPropertyPage::OnConnect(IUnknown *pUnknown)
{
OutputDebugString("\nOnConnect");
if(!m_pRMSourceStream)
{
HRESULT hr = pUnknown->QueryInterface(IID_IRMSourceStream, (void **) &m_pRMSourceStream);
if (FAILED(hr)) {
DbgBreak("Can't get IRMSourceStream interface.");
return E_NOINTERFACE;
}
m_pRMSourceStream->get_ConnParams(&m_pPropConnParams);
m_pRMSourceStream->get_pRMSource(&m_pIRMSource);
m_pRMSourceStream->get_pRMProps(&m_pRMProps);
m_pRMSourceStream->get_pIRTSP(&m_pIRtsp);
}
m_rmprops.servertype = m_pRMProps->servertype;
OSstrcpy(m_rmprops.serverIp,m_pRMProps->serverIp);
OSstrcpy(m_rmprops.browseinfo,m_pRMProps->browseinfo);
return S_OK;
}
//////////////////////////////////////////////////////////////////
HRESULT CRTSPPropertyPage::OnDeactivate()
{
OutputDebugString("\nOnDeactivate");
Apply();
return S_OK;
}
//////////////////////////////////////////////////////////////////
HRESULT CRTSPPropertyPage::OnDisconnect()
{
OutputDebugString("\nOnDisconnect");
Apply();
return S_OK;
}
//////////////////////////////////////////////////////////////////
HRESULT CRTSPPropertyPage::OnActivate()
{
OutputDebugString("\nOnActivate");
return S_OK;
}
//////////////////////////////////////////////////////////////////
HRESULT CRTSPPropertyPage::OnApplyChanges()
{
OutputDebugString("\nOnApplyChanges");
// OSstrcpy(m_pPropConnParams->sServerIp, m_rmprops.serverIp);
m_pRMProps->servertype = m_rmprops.servertype;
OSstrcpy(m_pRMProps->browseinfo,m_rmprops.browseinfo);
OSstrcpy(m_pRMProps->serverIp, m_rmprops.serverIp);
m_pIRMSource->SetDirty(TRUE);
return S_OK;
}
//////////////////////////////////////////////////////////////////
BOOL CRTSPPropertyPage::OnReceiveMessage(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam)
{
switch(uMsg)
{
case WM_INITDIALOG:
SendDlgItemMessage(hwnd,IDC_EDIT1,WM_SETTEXT,0,(LPARAM)(m_rmprops.browseinfo));
SendDlgItemMessage
(hwnd,IDC_EDIT2,WM_SETTEXT,0,(LPARAM)m_rmprops.serverIp);
SendDlgItemMessage(hwnd,IDC_COMBO1,CB_ADDSTRING ,0,(LPARAM)("OVS"));
SendDlgItemMessage(hwnd,IDC_COMBO1,CB_ADDSTRING ,0,(LPARAM)("SGI"));
switch(m_rmprops.servertype)
{
case OVS:
SendDlgItemMessage(hwnd,IDC_COMBO1,CB_SELECTSTRING ,0,(LPARAM)("OVS"));
break;
case SGI:
SendDlgItemMessage(hwnd,IDC_COMBO1,CB_SELECTSTRING ,0,(LPARAM)("SGI"));
break;
default:
break;
}
return FALSE;
case WM_COMMAND:
{
switch(LOWORD(wParam))
{
case IDC_BUTTON1:
m_propOpen.lStructSize = sizeof (OPENFILENAME);
m_propOpen.hwndOwner = hwnd;
// m_propOpen.hInstance = (HANDLE)hInst;
m_propOpen.lpstrFilter = m_pfiletypes;
m_propOpen.lpstrCustomFilter = (LPTSTR)NULL;
m_propOpen.nMaxCustFilter = 0L;
m_propOpen.nFilterIndex = 0L;
m_propOpen.lpstrFile = m_filepath;
m_propOpen.nMaxFile = sizeof (m_filepath);
m_propOpen.lpstrFileTitle = m_filepath;
m_propOpen.nMaxFileTitle = sizeof (m_filepath);
m_propOpen.lpstrInitialDir = NULL;
m_propOpen.lpstrTitle = "Open";
m_propOpen.nFileOffset = 0;
m_propOpen.nFileExtension = 0;
m_propOpen.lpstrDefExt = NULL;
m_propOpen.lCustData = 0;
GetOpenFileName(&m_propOpen);
OSstrcpy(m_rmprops.browseinfo,m_filepath);
SendDlgItemMessage
(hwnd,IDC_EDIT1,WM_SETTEXT,0,(LPARAM)(m_rmprops.browseinfo));
m_pIRMSource->SetDirty(TRUE);
m_bDirty = TRUE;
return FALSE;
case IDC_EDIT1:
if(HIWORD(wParam) == EN_UPDATE)
{
m_pathlength = SendDlgItemMessage
(hwnd,IDC_EDIT1,WM_GETTEXTLENGTH,(WPARAM)0,(LPARAM)0);
SendDlgItemMessage
(hwnd,IDC_EDIT1,WM_GETTEXT,(WPARAM) m_pathlength+1,(LPARAM) m_filepath);
OSstrcpy(m_rmprops.browseinfo,m_filepath);
m_pIRMSource->SetDirty(TRUE);
m_bDirty = TRUE;
}
return FALSE;
case IDC_EDIT2:
if(HIWORD(wParam) == EN_UPDATE)
{
m_pathlength = SendDlgItemMessage
(hwnd,IDC_EDIT2,WM_GETTEXTLENGTH,(WPARAM)0,(LPARAM)0);
SendDlgItemMessage
(hwnd,IDC_EDIT2,WM_GETTEXT,(WPARAM) m_pathlength+1,(LPARAM) m_ipaddress);
OSstrcpy(m_rmprops.serverIp,m_ipaddress);
m_pIRMSource->SetDirty(TRUE);
m_bDirty = TRUE;
}
return FALSE;
case IDC_COMBO1:
if(HIWORD(wParam) == CBN_SELCHANGE)
{
m_rmprops.servertype =
1 + SendDlgItemMessage(hwnd,IDC_COMBO1,CB_GETCURSEL ,0,0);
m_pIRMSource->SetDirty(TRUE);
m_bDirty = TRUE;
}
return FALSE;
default:
return FALSE;
}
}
default:
return FALSE;
}
return FALSE;
}
//////////////////////////////////////////////////////////////////
STDMETHODIMP CRTSPPropertyPage::NonDelegatingQueryInterface(REFIID riid,void **ppv)
{
return CBasePropertyPage::NonDelegatingQueryInterface(riid,ppv);
}
//////////////////////////////////////////////////////////////////
void CRTSPPropertyPage::InitValues()
{
OutputDebugString("\nInitValues");
m_pfiletypes = "All Files\0*.*\0";
m_pRMSourceStream = NULL;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -