MyTabCtrl.cpp
上传用户:gnaf34
上传日期:2022-04-22
资源大小:1657k
文件大小:6k
源码类别:

IP电话/视频会议

开发平台:

Visual C++

  1. /*
  2.  * MyTabCtrl.cxx
  3.  *
  4.  * Implementation file
  5.  *
  6.  * Copyright (c) ITEC-Ohio, 2002.
  7.  *
  8.  * The contents of this file are subject to the Mozilla Public License
  9.  * Version 1.0 (the "License"); you may not use this file except in
  10.  * compliance with the License. You may obtain a copy of the License at
  11.  * http://www.mozilla.org/MPL/
  12.  *
  13.  * Software distributed under the License is distributed on an "AS IS"
  14.  * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
  15.  * the License for the specific language governing rights and limitations
  16.  * under the License.
  17.  *
  18.  * The Original Code is Open H323 Library available at http://www.openh323.org
  19.  * The Initial Developer of the Original Code is Equivalence Pty. Ltd.
  20.  *
  21.  */
  22. #include "stdafx.h"
  23. #include <iostream>
  24. #include <fstream>
  25. #include <vector>
  26. #include <ptlib.h>
  27. #include <string.h>
  28. #include "main.h"
  29. #include "BeaconClient.h"
  30. #include "DlgMain.h"
  31. #include "DlgStatistics.h"
  32. #include "DlgAudioVideo.h"
  33. #include "DlgSettings.h"
  34. #include "MyTabCtrl.h"
  35. #ifdef _DEBUG
  36. #define new DEBUG_NEW
  37. #undef THIS_FILE
  38. static char THIS_FILE[] = __FILE__;
  39. #endif
  40. extern int StartTimeGlobalYear;
  41. extern int StartTimeGlobalMonth;
  42. extern int StartTimeGlobalDay;
  43. extern int StartTimeGlobalHour;
  44. extern int StartTimeGlobalMinute;
  45. extern int StartTimeGlobalSecond;
  46. /////////////////////////////////////////////////////////////////////////////
  47. // CMyTabCtrl
  48. extern BeaconClient* globalInstance;
  49. extern int FlagEndPoint;
  50. CMyTabCtrl::CMyTabCtrl()
  51. {
  52. m_tabPages[0] = new CDlgMain();
  53. m_tabPages[2] = new CDlgStatistics();
  54. m_tabPages[3] = new CDlgAudioVideo();
  55. m_tabPages[1] = new CDlgSettings();
  56. m_nNumberOfPages = 4;
  57. }
  58. CMyTabCtrl* CMyTabCtrl::_instance = 0;
  59. CMyTabCtrl* CMyTabCtrl::Instance()
  60. {
  61. if (_instance == 0){
  62. _instance = new CMyTabCtrl;
  63. }
  64. return _instance;
  65. }
  66. CMyTabCtrl::~CMyTabCtrl()
  67. {
  68. for(int nCount=0; nCount < m_nNumberOfPages; nCount++){
  69. delete m_tabPages[nCount];
  70. }
  71. }
  72. void CMyTabCtrl::Init()
  73. {
  74. m_tabCurrent=0;
  75. m_tabPages[0]->Create(IDD_DIALOG_MAIN, this);
  76. m_tabPages[2]->Create(IDD_DIALOG_STATISTICS, this);
  77. m_tabPages[3]->Create(IDD_DIALOG_AUDIO_VIDEO, this);
  78. m_tabPages[1]->Create(IDD_DIALOG_SETTINGS, this);
  79. m_tabPages[0]->ShowWindow(SW_HIDE);
  80. m_tabPages[2]->ShowWindow(SW_SHOW);
  81. m_tabPages[3]->ShowWindow(SW_HIDE);
  82. m_tabPages[1]->ShowWindow(SW_HIDE);
  83. SetRectangle();
  84. m_tabPages[0]->ShowWindow(SW_SHOW);
  85. m_tabPages[2]->ShowWindow(SW_HIDE);
  86. m_tabPages[3]->ShowWindow(SW_HIDE);
  87. m_tabPages[1]->ShowWindow(SW_HIDE);
  88. }
  89. void CMyTabCtrl::SetRectangle()
  90. {
  91. CRect tabRect, itemRect;
  92. int nX, nY, nXc, nYc;
  93. GetClientRect(&tabRect);
  94. GetItemRect(0, &itemRect);
  95. nX=itemRect.left;
  96. nY=itemRect.bottom+1;
  97. nXc=tabRect.right-itemRect.left-1;
  98. nYc=tabRect.bottom-nY-1;
  99. m_tabPages[0]->SetWindowPos(&wndTop, nX, nY, nXc, nYc, SWP_SHOWWINDOW);
  100. for(int nCount=0; nCount < m_nNumberOfPages; nCount++){
  101. m_tabPages[nCount]->SetWindowPos(&wndTop, nX, nY, nXc, nYc, SWP_HIDEWINDOW);
  102. }
  103. }
  104. BEGIN_MESSAGE_MAP(CMyTabCtrl, CTabCtrl)
  105. //{{AFX_MSG_MAP(CMyTabCtrl)
  106. ON_WM_LBUTTONDOWN()
  107. ON_WM_LBUTTONDBLCLK()
  108. //}}AFX_MSG_MAP
  109. END_MESSAGE_MAP()
  110. /////////////////////////////////////////////////////////////////////////////
  111. // CMyTabCtrl message handlers
  112. void CMyTabCtrl::OnLButtonDown(UINT nFlags, CPoint point) 
  113. {
  114. CTabCtrl::OnLButtonDown(nFlags, point);
  115. // TODO: Add your message handler code here and/or call default
  116. if(m_tabCurrent != GetCurFocus()){
  117. /*
  118. m_tabPages[m_tabCurrent]->ShowWindow(SW_HIDE);
  119. m_tabCurrent=GetCurFocus();
  120. m_tabPages[m_tabCurrent]->ShowWindow(SW_SHOW);
  121. m_tabPages[m_tabCurrent]->SetFocus();
  122. */
  123. // When Call has not been establish, user only 
  124. // can use Main Window (means user cannot see
  125. // Statistic window and Audio Video window
  126. // When call already established , user can see
  127. // all windows
  128. m_tabTemp = m_tabCurrent;
  129. m_tabCurrent = GetCurFocus();
  130. m_cursel = GetCurSel();
  131. if ( FlagEndPoint == 0){
  132. /*
  133. if (m_tabCurrent == 1)
  134. {
  135. m_tabPages[0]->ShowWindow(SW_HIDE);
  136. m_tabPages[2]->ShowWindow(SW_HIDE);
  137. m_tabPages[1]->ShowWindow(SW_SHOW);
  138. m_tabPages[1]->UpdateWindow();
  139. m_tabPages[1]->SetFocus();
  140. SetCurSel(1);
  141. }
  142. if (m_tabCurrent == 2)
  143. {
  144. m_tabPages[0]->ShowWindow(SW_HIDE);
  145. m_tabPages[1]->ShowWindow(SW_HIDE);
  146. m_tabPages[2]->ShowWindow(SW_SHOW);
  147. m_tabPages[2]->UpdateWindow();
  148. m_tabPages[2]->SetFocus();
  149. SetCurSel(2);
  150. }
  151. if (m_tabCurrent == 0)
  152. {
  153. m_tabPages[1]->ShowWindow(SW_HIDE);
  154. m_tabPages[2]->ShowWindow(SW_HIDE);
  155. m_tabPages[0]->ShowWindow(SW_SHOW);
  156. m_tabPages[0]->UpdateWindow();
  157. m_tabPages[0]->SetFocus();
  158. SetCurSel(0);
  159. }
  160. */
  161. }
  162. else{
  163. /*
  164. if ( (m_tabCurrent == 1) || (m_tabCurrent == 2) || (m_cursel == 1) || (m_cursel == 1) )
  165. {
  166. AfxMessageBox("Should be in Call!");
  167. }
  168. // Put into default main window
  169. m_tabPages[m_tabCurrent]->ShowWindow(SW_HIDE);
  170. m_tabPages[0]->ShowWindow(SW_SHOW);
  171. m_tabPages[1]->ShowWindow(SW_HIDE);
  172. m_tabPages[2]->ShowWindow(SW_HIDE);
  173. m_tabPages[0]->UpdateWindow();
  174. m_tabPages[0]->SetFocus();
  175. SetCurSel(0);
  176. FlagEndPoint = 1;
  177. */
  178. }
  179. }
  180. }
  181. void CMyTabCtrl::OnLButtonDblClk(UINT nFlags, CPoint point) 
  182. {
  183. // TODO: Add your message handler code here and/or call default
  184. CTabCtrl::OnLButtonDblClk(nFlags, point);
  185. }
  186. void CMyTabCtrl::CheckTab()
  187. {
  188. }
  189. void CMyTabCtrl::SetHwndTab(HWND pHwnd)
  190. {
  191. m_hWnd = pHwnd;
  192. int a= 0;
  193. }