MessageDlg.cpp
上传用户:tuheem
上传日期:2007-05-01
资源大小:21889k
文件大小:4k
源码类别:

多媒体编程

开发平台:

Visual C++

  1. #include "stdafx.h"
  2. #include "rtccore.h"
  3. #include "AVDConf.h"
  4. #include "MessageDlg.h"
  5. #include "defines.h"
  6. #ifdef _DEBUG
  7. #define new DEBUG_NEW
  8. #undef THIS_FILE
  9. static char THIS_FILE[] = __FILE__;
  10. #endif
  11. /////////////////////////////////////////////////////////////////////////////
  12. // CMessageDlg dialog
  13. CMessageDlg::CMessageDlg(CWnd* pParent /*=NULL*/)
  14. : CDialog(CMessageDlg::IDD, pParent)
  15. {
  16. //{{AFX_DATA_INIT(CMessageDlg)
  17. // NOTE: the ClassWizard will add member initialization here
  18. //}}AFX_DATA_INIT
  19. }
  20. void CMessageDlg::DoDataExchange(CDataExchange* pDX)
  21. {
  22. CDialog::DoDataExchange(pDX);
  23. //{{AFX_DATA_MAP(CMessageDlg)
  24. DDX_Control(pDX, IDC_MESSAGE, m_cMessage);
  25. DDX_Control(pDX, IDC_TEXT, m_cText);
  26. //}}AFX_DATA_MAP
  27. }
  28. BEGIN_MESSAGE_MAP(CMessageDlg, CDialog)
  29. //{{AFX_MSG_MAP(CMessageDlg)
  30. ON_BN_CLICKED(IDC_SENDTEXT, OnSendtext)
  31. ON_BN_CLICKED(IDC_CLEAR, OnClear)
  32. //}}AFX_MSG_MAP
  33. END_MESSAGE_MAP()
  34. HRESULT CMessageDlg::DeliverMessage(IRTCParticipant *pParticipant, BSTR bstrContentType, 
  35. BSTR bstrMessage)
  36. {
  37.     HRESULT hr;
  38.     BSTR bstrURI = NULL;
  39.     hr = pParticipant->get_UserURI(&bstrURI);
  40.     if (FAILED(hr))
  41.     {
  42.         
  43.         return hr;
  44.     }
  45.     
  46. char szBuf[256], szText[265];
  47. wcstombs ( szBuf, bstrURI, 256);
  48. SendDlgItemMessage (IDC_MESSAGE, LB_INSERTSTRING, (WPARAM)-1, (LPARAM)szBuf);
  49. wcstombs ( szBuf, bstrMessage, 256 );
  50. sprintf ( szText, "     %s", szBuf );
  51. SendDlgItemMessage (IDC_MESSAGE, LB_INSERTSTRING, (WPARAM)-1, (LPARAM)szText);
  52.     if (FAILED(hr))
  53.     {
  54.        
  55.         return hr;
  56.     }
  57.     if (FAILED(hr))
  58.     {
  59.         
  60.         return hr;
  61.     }
  62.     return S_OK;
  63. }
  64. HRESULT CMessageDlg::DeliverUserStatus(IRTCParticipant *pParticipant, RTC_MESSAGING_USER_STATUS enStatus)
  65. {
  66.     HRESULT hr;
  67.     BSTR bstrURI = NULL;
  68.     
  69.     hr = pParticipant->get_UserURI(&bstrURI);
  70.     if (FAILED(hr))
  71.     {
  72.         
  73.         return hr;
  74.     }
  75.     
  76. if (enStatus)
  77. {
  78. char szTyping[256], szBuf[256];
  79. wcstombs ( szBuf, bstrURI, 256 );
  80.         wsprintf(szTyping, "%s is typing.", szBuf);
  81.         SetDlgItemText ( IDC_STATUSTEXT, szTyping );
  82.   }
  83.     if (FAILED(hr))
  84.     {
  85.        
  86.         return hr;
  87.     }
  88.     return S_OK;
  89. }
  90. void CMessageDlg::OnSendtext() 
  91. {
  92. LONG lLength;
  93. BSTR bstrMessage;
  94. WCHAR szBuf[256];
  95. GetDlgItemTextW (m_hWnd, IDC_TEXT, szBuf, 256);
  96. if ((lLength = lstrlenW(szBuf)) > 0)
  97. {
  98. bstrMessage = SysAllocString ( szBuf );
  99. if (bstrMessage == NULL)
  100. {
  101. return;
  102. }
  103. DoDisplayMessage();
  104. m_pParentSession->SendMessage ( NULL, bstrMessage, 0 );
  105. SAFE_FREE_STRING (bstrMessage);
  106. }
  107. }
  108. void CMessageDlg::OnClear() 
  109. {
  110. m_cMessage.ResetContent ();
  111. }
  112. BOOL CMessageDlg::OnInitDialog() 
  113. {
  114. CDialog::OnInitDialog();
  115. m_cText.LimitText ( 256 );
  116. return TRUE;  
  117. }
  118. void CMessageDlg::SetParentClient(IRTCClient *pClient)
  119. {
  120. m_pParentClient = pClient;
  121. }
  122. void CMessageDlg::SetSession(IRTCSession *pSession)
  123. {
  124. m_pParentSession = pSession;
  125. }
  126. void CMessageDlg::OnOK() 
  127. {
  128. HRESULT hr = m_pParentSession->Terminate(RTCTR_NORMAL);
  129. SAFE_RELEASE (m_pParentSession);
  130. DestroyWindow();
  131. }
  132. void CMessageDlg::DoDisplayMessage()
  133. {
  134. BSTR bstrURI = NULL;
  135. char szBuf[256], LBBuf[265];
  136. HRESULT hr = m_pParentClient->get_LocalUserURI (&bstrURI);
  137. wcstombs(szBuf, bstrURI, 256);
  138. SendDlgItemMessage (IDC_MESSAGE, LB_INSERTSTRING, (WPARAM)-1, (LPARAM)szBuf );
  139. GetDlgItemText (IDC_TEXT, szBuf, 256);
  140. wsprintf ( LBBuf, "       %s", szBuf );
  141. SendDlgItemMessage (IDC_MESSAGE, LB_INSERTSTRING, (WPARAM)-1, (LPARAM)LBBuf);
  142. m_cText.SetSel (0, -1);
  143. m_cText.ReplaceSel ("");
  144. }
  145. void CMessageDlg::OnCancel() 
  146. {
  147. return;
  148. }