IEView.cpp
上传用户:popouu88
上传日期:2013-02-11
资源大小:2894k
文件大小:4k
源码类别:

IP电话/视频会议

开发平台:

Visual C++

  1. // IEView.cpp : implementation file
  2. //
  3. #include "stdafx.h"
  4. #include "IE.h"
  5. #include "IEView.h"
  6. #include "MainFrame.h"
  7. #include "mshtml.h"
  8. #ifdef _DEBUG
  9. #define new DEBUG_NEW
  10. #undef THIS_FILE
  11. static char THIS_FILE[] = __FILE__;
  12. #endif
  13. /////////////////////////////////////////////////////////////////////////////
  14. // CIEView
  15. CIEView::CIEView()
  16. {
  17. ::CoInitialize( NULL );
  18. this->tab = NULL;
  19. this->index = 0;
  20. this->m_bNotify = FALSE;
  21. this->username = "";
  22. this->ieid = 0;
  23. this->curURL = "";
  24. this->advise = true;
  25. }
  26. CIEView::~CIEView()
  27. {
  28. }
  29. BEGIN_MESSAGE_MAP(CIEView, CHtmlView)
  30. //{{AFX_MSG_MAP(CIEView)
  31. ON_WM_PARENTNOTIFY()
  32. ON_WM_TIMER()
  33. //}}AFX_MSG_MAP
  34. END_MESSAGE_MAP()
  35. /////////////////////////////////////////////////////////////////////////////
  36. // CIEView diagnostics
  37. void CIEView::OnBeforeNavigate2(LPCTSTR lpszURL, DWORD nFlags, LPCTSTR lpszTargetFrameName, CByteArray& baPostedData, LPCTSTR lpszHeaders, BOOL* pbCancel) 
  38. {
  39. this->advise = true;
  40. this->SetTimer( 2 , 10000 , NULL );
  41. CHtmlView::OnBeforeNavigate2(lpszURL, nFlags, lpszTargetFrameName, baPostedData, lpszHeaders, pbCancel);
  42. }
  43. void CIEView::OnNavigateComplete2(LPCTSTR strURL) 
  44. {
  45. CString url = this->GetLocationURL( );
  46. CMainFrame * frame = this->GetFrame( );
  47. if( ! url.IsEmpty( ) && this->curURL != url && this->m_bNotify )
  48. {
  49. this->curURL = url;
  50. //恢复不可通知外部程序
  51. this->m_bNotify = FALSE;
  52. if( frame && frame->OnIEURL )
  53. {
  54. char buffer[ 1000 ];
  55. char * now = buffer;
  56. //浏览器id
  57. *( int * )now = this->ieid; now += sizeof( int );
  58. //用户名
  59. strcpy( now , this->username ); now += this->username.GetLength( ) + sizeof( char );
  60. //然后是地址
  61. strcpy( now , url );
  62. //通知外部程序
  63. frame->OnIEURL( frame->wParam , frame , buffer , sizeof( int ) + this->username.GetLength( ) + sizeof( char ) + url.GetLength( ) + sizeof( char ) );
  64. }
  65. }
  66. // if( frame )
  67. // frame->GetAddrWnd( ).SetWindowText( strURL );
  68. CHtmlView::OnNavigateComplete2(strURL);
  69. }
  70. void CIEView::OnNewWindow2( LPDISPATCH * ppDisp, BOOL * Cancel ) 
  71. {  
  72. * ppDisp  = NULL;
  73. if( this->m_bNotify )
  74. {
  75. this->m_bNotify = FALSE;
  76. CIEView * ieView = this->GetFrame( )->GetView( )->CreateIEView( );
  77. if( ieView )
  78. {
  79. ieView->ieid = ( int )ieView;
  80. ieView->username = this->GetFrame( )->user_name;
  81. ieView->m_bNotify = TRUE;
  82. * ppDisp = ieView->GetApplication( );
  83. }
  84. }
  85. if( * ppDisp == NULL )
  86. * Cancel = TRUE;
  87. CHtmlView::OnNewWindow2( ppDisp , Cancel );
  88. }
  89. void CIEView::OnTitleChange( LPCTSTR lpszText ) 
  90. {
  91. if( this->tab )
  92. {
  93. CString text( lpszText );
  94. if( text.GetLength( ) > 10 )
  95. text = text.Left( 8 ) + "...";
  96. TCITEM item;
  97. item.mask = TCIF_TEXT;
  98. item.pszText = ( char * )( const char * )text;
  99. this->tab->SetItem( this->index , &item );
  100. }
  101. }
  102. void CIEView::OnStatusTextChange(LPCTSTR lpszText) 
  103. {
  104. this->GetFrame( )->SetStatusText( lpszText );
  105. CHtmlView::OnStatusTextChange(lpszText);
  106. }
  107. void CIEView::OnParentNotify(UINT message, LPARAM lParam) 
  108. {
  109. CHtmlView::OnParentNotify( message , lParam );
  110.     //鼠标单击 
  111. if( message == WM_LBUTTONDOWN )
  112. {
  113. this->m_bNotify = true;
  114. if( this->advise )
  115. this->SetTimer( 1 , 10000 , NULL );
  116. }
  117. }
  118. void CIEView::OnTimer(UINT nIDEvent) 
  119. {
  120. CHtmlView::OnTimer( nIDEvent );
  121. this->KillTimer( nIDEvent );
  122. if( nIDEvent == 1 )
  123. this->m_bNotify = false;
  124. else if( nIDEvent == 2 )
  125. this->advise = false;
  126. }
  127. void CIEView::OnProgressChange(long nProgress, long nProgressMax) 
  128. {
  129. if( nProgress == -1 )
  130. { //更新窗口
  131. if( this->GetStyle( ) & WS_VISIBLE )
  132. {
  133. this->ShowWindow( SW_HIDE );
  134. this->ShowWindow( SW_SHOW );
  135. }
  136. else
  137. {
  138. this->ShowWindow( SW_SHOW );
  139. this->ShowWindow( SW_HIDE );
  140. }
  141. }
  142. CHtmlView::OnProgressChange(nProgress, nProgressMax);
  143. }