MainFrm.cpp
上传用户:sesekoo
上传日期:2020-07-18
资源大小:21543k
文件大小:16k
源码类别:

界面编程

开发平台:

Visual C++

  1. // MainFrm.cpp : implementation of the CMainFrame class
  2. //
  3. #include "stdafx.h"
  4. #include "MthOutput.h"
  5. #include "MainFrm.h"
  6. #ifdef _DEBUG
  7. #define new DEBUG_NEW
  8. #undef THIS_FILE
  9. static char THIS_FILE[] = __FILE__;
  10. #endif
  11. /////////////////////////////////////////////////////////////////////////////
  12. // CMainFrame
  13. IMPLEMENT_DYNAMIC( CMainFrame, CMDIFrameWnd )
  14. BEGIN_MESSAGE_MAP( CMainFrame, CMDIFrameWnd )
  15. //{{AFX_MSG_MAP(CMainFrame)
  16. ON_WM_CREATE()
  17. //}}AFX_MSG_MAP
  18. ON_COMMAND_EX(ID_VIEW_MENUBAR, OnBarCheck )
  19. ON_UPDATE_COMMAND_UI(ID_VIEW_MENUBAR, OnUpdateControlBarMenu)
  20. ON_COMMAND_EX(IDR_TOOLBAR1, OnBarCheck )
  21. ON_UPDATE_COMMAND_UI(IDR_TOOLBAR1, OnUpdateControlBarMenu)
  22. ON_COMMAND_EX(ID_VIEW_UI_LOOK_BAR, OnBarCheck )
  23. ON_UPDATE_COMMAND_UI(ID_VIEW_UI_LOOK_BAR, OnUpdateControlBarMenu)
  24. ON_COMMAND_EX(ID_VIEW_RESIZABLE_BAR_0, OnBarCheck )
  25. ON_UPDATE_COMMAND_UI(ID_VIEW_RESIZABLE_BAR_0, OnUpdateControlBarMenu)
  26. ON_COMMAND_EX(ID_VIEW_RESIZABLE_BAR_1, OnBarCheck )
  27. ON_UPDATE_COMMAND_UI(ID_VIEW_RESIZABLE_BAR_1, OnUpdateControlBarMenu)
  28. ON_COMMAND_EX(ID_VIEW_RESIZABLE_BAR_2, OnBarCheck )
  29. ON_UPDATE_COMMAND_UI(ID_VIEW_RESIZABLE_BAR_2, OnUpdateControlBarMenu)
  30. ON_COMMAND_EX(ID_VIEW_RESIZABLE_BAR_3, OnBarCheck )
  31. ON_UPDATE_COMMAND_UI(ID_VIEW_RESIZABLE_BAR_3, OnUpdateControlBarMenu)
  32. ON_COMMAND_EX(ID_VIEW_RESIZABLE_BAR_4, OnBarCheck )
  33. ON_UPDATE_COMMAND_UI(ID_VIEW_RESIZABLE_BAR_4, OnUpdateControlBarMenu)
  34. ON_COMMAND_EX(ID_VIEW_RESIZABLE_BAR_5, OnBarCheck )
  35. ON_UPDATE_COMMAND_UI(ID_VIEW_RESIZABLE_BAR_5, OnUpdateControlBarMenu)
  36. ON_REGISTERED_MESSAGE(
  37. CExtPopupMenuWnd::g_nMsgPrepareMenu,
  38. OnExtMenuPrepare
  39. )
  40. END_MESSAGE_MAP()
  41. static UINT indicators[] =
  42. {
  43. ID_SEPARATOR,           // status line indicator
  44. ID_INDICATOR_CAPS,
  45. ID_INDICATOR_NUM,
  46. ID_INDICATOR_SCRL,
  47. };
  48. /////////////////////////////////////////////////////////////////////////////
  49. // CMainFrame construction/destruction
  50. CMainFrame::CMainFrame()
  51. {
  52. CWinApp * pApp = ::AfxGetApp();
  53. ASSERT( pApp != NULL );
  54. ASSERT( pApp->m_pszRegistryKey != NULL );
  55. ASSERT( pApp->m_pszRegistryKey[0] != _T('') );
  56. ASSERT( pApp->m_pszProfileName != NULL );
  57. ASSERT( pApp->m_pszProfileName[0] != _T('') );
  58. if( ! g_PaintManager.PaintManagerStateLoad(
  59. pApp->m_pszRegistryKey,
  60. pApp->m_pszProfileName,
  61. pApp->m_pszProfileName
  62. )
  63. )
  64. g_PaintManager.InstallPaintManager(
  65. RUNTIME_CLASS(CExtPaintManagerNativeXP)
  66. );
  67. // window placement persistence
  68. ::memset( &m_dataFrameWP, 0, sizeof(WINDOWPLACEMENT) );
  69. m_dataFrameWP.length = sizeof(WINDOWPLACEMENT);
  70. m_dataFrameWP.showCmd = SW_HIDE;
  71. CExtPopupMenuWnd::g_bMenuExpanding = false;
  72. CExtPopupMenuWnd::g_bMenuHighlightRarely = false;
  73. //CExtPopupMenuWnd::g_bMenuWithShadows = false;
  74. }
  75. CMainFrame::~CMainFrame()
  76. {
  77. }
  78. void CMainFrame::OnUpdateControlBarMenu(CCmdUI* pCmdUI)
  79. {
  80. // CFrameWnd::OnUpdateControlBarMenu( pCmdUI );
  81. CExtControlBar::DoFrameBarCheckUpdate(
  82. this,
  83. pCmdUI,
  84. false
  85. );
  86. }
  87. BOOL CMainFrame::OnBarCheck(UINT nID)
  88. {
  89. // return CFrameWnd::OnBarCheck( nID );
  90. return
  91. CExtControlBar::DoFrameBarCheckCmd(
  92. this,
  93. nID,
  94. false
  95. );
  96. }
  97. int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
  98. {
  99. if( CExtNCW < CMDIFrameWnd > :: OnCreate( lpCreateStruct ) == -1 )
  100. return -1;
  101. CWinApp * pApp = ::AfxGetApp();
  102. ASSERT( pApp != NULL );
  103. ASSERT( pApp->m_pszRegistryKey != NULL );
  104. ASSERT( pApp->m_pszRegistryKey[0] != _T('') );
  105. ASSERT( pApp->m_pszProfileName != NULL );
  106. ASSERT( pApp->m_pszProfileName[0] != _T('') );
  107. ASSERT( pApp->m_pszProfileName != NULL );
  108. g_CmdManager->ProfileSetup(
  109. pApp->m_pszProfileName,
  110. GetSafeHwnd()
  111. );
  112. VERIFY(
  113. g_CmdManager->UpdateFromMenu(
  114. pApp->m_pszProfileName,
  115. IDR_MAINFRAME
  116. )
  117. );
  118. VERIFY(
  119. g_CmdManager->UpdateFromMenu(
  120. pApp->m_pszProfileName,
  121. IDR_MDITYPE
  122. )
  123. );
  124. m_wndMenuBar.SetMdiWindowPopupName( _T("Window") );
  125. if( !m_wndMenuBar.Create(
  126. NULL, // _T("Menu Bar"),
  127. this,
  128. ID_VIEW_MENUBAR
  129. )
  130. )
  131.     {
  132.         TRACE0("Failed to create menubarn");
  133.         return -1;      // failed to create
  134.     }
  135. if( !m_wndToolBar.Create(
  136. _T("Standard"),
  137. this,
  138. AFX_IDW_TOOLBAR
  139. )
  140. ||
  141. !m_wndToolBar.LoadToolBar(IDR_MAINFRAME)
  142. )
  143. {
  144. TRACE0("Failed to create toolbarn");
  145. return -1;      // fail to create
  146. }
  147. if( !m_wndToolBar1.Create(
  148. _T("ToolBar 1"),
  149. this,
  150. IDR_TOOLBAR1
  151. )
  152. ||
  153. !m_wndToolBar1.LoadToolBar(IDR_TOOLBAR1)
  154. )
  155. {
  156. TRACE0("Failed to create toolbar1n");
  157. return -1;      // fail to create
  158. }
  159. if( ! m_wndToolBarUiLook.Create(
  160. _T("ToolBar2 "),
  161. this,
  162. ID_VIEW_UI_LOOK_BAR
  163. )
  164. ||
  165. ! m_wndToolBarUiLook.ThemeSwitcherInit()
  166. )
  167. {
  168. TRACE0("Failed to create toolbar2n");
  169. return -1;      // fail to create
  170. }
  171. m_DemoThread0.m_wndDemoEventSource.m_pWndLogCtrl = &m_wndLogCtrl0;
  172. m_DemoThread1.m_wndDemoEventSource.m_pWndLogCtrl = &m_wndLogCtrl1;
  173. m_DemoThread2.m_wndDemoEventSource.m_pWndLogCtrl = &m_wndLogCtrl2;
  174. m_DemoThread3.m_wndDemoEventSource.m_pWndLogCtrl = &m_wndLogCtrl3;
  175. m_DemoThread4.m_wndDemoEventSource.m_pWndLogCtrl = &m_wndLogCtrl4;
  176. m_DemoThread5.m_wndDemoEventSource.m_pWndLogCtrl = &m_wndLogCtrl5;
  177. if( !m_wndResizableBar0.Create(
  178. _T("Resizable Bar 0"),
  179. this,
  180. ID_VIEW_RESIZABLE_BAR_0
  181. )
  182. || !m_wndLogCtrl0.Create(
  183. &m_wndResizableBar0
  184. )
  185. || !m_DemoThread0.CreateThread(
  186. &m_wndLogCtrl0
  187. )
  188. || !m_wndResizableBar1.Create(
  189. _T("Resizable Bar 1"),
  190. this,
  191. ID_VIEW_RESIZABLE_BAR_1
  192. )
  193. || !m_wndLogCtrl1.Create(
  194. &m_wndResizableBar1
  195. )
  196. || !m_DemoThread1.CreateThread(
  197. &m_wndLogCtrl1
  198. )
  199. || !m_wndResizableBar2.Create(
  200. _T("Resizable Bar 2"),
  201. this,
  202. ID_VIEW_RESIZABLE_BAR_2
  203. )
  204. || !m_wndLogCtrl2.Create(
  205. &m_wndResizableBar2
  206. )
  207. || !m_DemoThread2.CreateThread(
  208. &m_wndLogCtrl2
  209. )
  210. || !m_wndResizableBar3.Create(
  211. _T("Resizable Bar 3"),
  212. this,
  213. ID_VIEW_RESIZABLE_BAR_3
  214. )
  215. || !m_wndLogCtrl3.Create(
  216. &m_wndResizableBar3
  217. )
  218. || !m_DemoThread3.CreateThread(
  219. &m_wndLogCtrl3
  220. )
  221. || !m_wndResizableBar4.Create(
  222. _T("Resizable Bar 4"),
  223. this,
  224. ID_VIEW_RESIZABLE_BAR_4
  225. )
  226. || !m_wndLogCtrl4.Create(
  227. &m_wndResizableBar4
  228. )
  229. || !m_DemoThread4.CreateThread(
  230. &m_wndLogCtrl4
  231. )
  232. || !m_wndResizableBar5.Create(
  233. _T("Resizable Bar 5"),
  234. this,
  235. ID_VIEW_RESIZABLE_BAR_5
  236. )
  237. || !m_wndLogCtrl5.Create(
  238. &m_wndResizableBar5
  239. )
  240. || !m_DemoThread5.CreateThread(
  241. &m_wndLogCtrl5
  242. )
  243. )
  244. {
  245. TRACE0("Failed to create "m_wndResizableBar"sn");
  246. return -1; // fail to create
  247. }
  248. if (!m_wndStatusBar.Create(this) ||
  249. !m_wndStatusBar.SetIndicators(indicators,
  250.   sizeof(indicators)/sizeof(UINT)))
  251. {
  252. TRACE0("Failed to create status barn");
  253. return -1;      // fail to create
  254. }
  255.     m_wndMenuBar.EnableDocking(CBRS_ALIGN_ANY);
  256. m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
  257. m_wndToolBar1.EnableDocking(CBRS_ALIGN_ANY);
  258. m_wndToolBarUiLook.EnableDocking(CBRS_ALIGN_ANY);
  259. m_wndResizableBar0.EnableDocking(CBRS_ALIGN_ANY);
  260. m_wndResizableBar1.EnableDocking(CBRS_ALIGN_ANY);
  261. m_wndResizableBar2.EnableDocking(CBRS_ALIGN_ANY);
  262. m_wndResizableBar3.EnableDocking(CBRS_ALIGN_ANY);
  263. m_wndResizableBar4.EnableDocking(CBRS_ALIGN_ANY);
  264. m_wndResizableBar5.EnableDocking(CBRS_ALIGN_ANY);
  265. if( !CExtControlBar::FrameEnableDocking(this) )
  266. {
  267. ASSERT( FALSE );
  268. return -1;
  269. }
  270. #if (!defined __EXT_MFC_NO_TAB_CONTROLBARS)
  271. if( !CExtControlBar::FrameInjectAutoHideAreas(this) )
  272. {
  273. ASSERT( FALSE );
  274. return -1;
  275. }
  276. #endif // (!defined __EXT_MFC_NO_TAB_CONTROLBARS)
  277. if( !CExtControlBar::ProfileBarStateLoad(
  278. this,
  279. pApp->m_pszRegistryKey,
  280. pApp->m_pszProfileName,
  281. pApp->m_pszProfileName,
  282. &m_dataFrameWP
  283. )
  284. )
  285. {
  286. CRect wrAlreadyDockedBar;
  287. DockControlBar(&m_wndMenuBar);
  288. DockControlBar(&m_wndToolBar);
  289. RecalcLayout();
  290. m_wndToolBar.GetWindowRect( &wrAlreadyDockedBar );
  291. wrAlreadyDockedBar.OffsetRect( 1, 0 );
  292. DockControlBar(&m_wndToolBar1,AFX_IDW_DOCKBAR_TOP,&wrAlreadyDockedBar);
  293. DockControlBar(&m_wndToolBarUiLook,AFX_IDW_DOCKBAR_RIGHT);
  294. RecalcLayout();
  295. static CSize
  296. _sizeInitH( 250, 100 ),
  297. _sizeInitV( 100, 250 ),
  298. _sizeInitF( 250, 250 );
  299. m_wndResizableBar0.SetInitDesiredSizeHorizontal( _sizeInitH );
  300. m_wndResizableBar0.SetInitDesiredSizeVertical( _sizeInitV );
  301. m_wndResizableBar0.SetInitDesiredSizeFloating( _sizeInitF );
  302. m_wndResizableBar1.SetInitDesiredSizeHorizontal( _sizeInitH );
  303. m_wndResizableBar1.SetInitDesiredSizeVertical( _sizeInitV );
  304. m_wndResizableBar1.SetInitDesiredSizeFloating( _sizeInitF );
  305. m_wndResizableBar2.SetInitDesiredSizeHorizontal( _sizeInitH );
  306. m_wndResizableBar2.SetInitDesiredSizeVertical( _sizeInitV );
  307. m_wndResizableBar2.SetInitDesiredSizeFloating( _sizeInitF );
  308. m_wndResizableBar3.SetInitDesiredSizeHorizontal( _sizeInitH );
  309. m_wndResizableBar3.SetInitDesiredSizeVertical( _sizeInitV );
  310. m_wndResizableBar3.SetInitDesiredSizeFloating( _sizeInitF );
  311. m_wndResizableBar4.SetInitDesiredSizeHorizontal( _sizeInitH );
  312. m_wndResizableBar4.SetInitDesiredSizeVertical( _sizeInitV );
  313. m_wndResizableBar4.SetInitDesiredSizeFloating( _sizeInitF );
  314. m_wndResizableBar5.SetInitDesiredSizeHorizontal( _sizeInitH );
  315. m_wndResizableBar5.SetInitDesiredSizeVertical( _sizeInitV );
  316. m_wndResizableBar5.SetInitDesiredSizeFloating( _sizeInitF );
  317. m_wndResizableBar0.DockControlBar(AFX_IDW_DOCKBAR_LEFT,1,this,false);
  318. m_wndResizableBar0.DockControlBar(&m_wndResizableBar1,true,true);
  319. m_wndResizableBar2.FloatControlBar( CPoint(300,100) );
  320. m_wndResizableBar2.DockControlBar(&m_wndResizableBar3,false,true);
  321. m_wndResizableBar2.GetParentFrame()->RecalcLayout();
  322. m_wndResizableBar3.DockControlBar(&m_wndResizableBar4,false,true);
  323. m_wndResizableBar2.GetParentFrame()->RecalcLayout();
  324. m_wndResizableBar0.DockControlBar(&m_wndResizableBar5,false,true);
  325. RecalcLayout();
  326. }
  327. return 0;
  328. }
  329. BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
  330. {
  331. if( ! CExtNCW < CMDIFrameWnd >::PreCreateWindow( cs ) )
  332. return FALSE;
  333. return TRUE;
  334. }
  335. /////////////////////////////////////////////////////////////////////////////
  336. // CMainFrame diagnostics
  337. #ifdef _DEBUG
  338. void CMainFrame::AssertValid() const
  339. {
  340. CExtNCW < CMDIFrameWnd > :: AssertValid();
  341. }
  342. void CMainFrame::Dump(CDumpContext& dc) const
  343. {
  344. CExtNCW < CMDIFrameWnd > :: Dump( dc );
  345. }
  346. #endif //_DEBUG
  347. /////////////////////////////////////////////////////////////////////////////
  348. // CMainFrame message handlers
  349. BOOL CMainFrame::PreTranslateMessage(MSG* pMsg) 
  350. {
  351. if( m_wndToolBarUiLook.PreTranslateMessage( pMsg ) )
  352. return TRUE;
  353. if( m_wndMenuBar.TranslateMainFrameMessage( pMsg ) )
  354. return TRUE;
  355. return CExtNCW < CMDIFrameWnd > :: PreTranslateMessage( pMsg );
  356. }
  357. BOOL CMainFrame::DestroyWindow() 
  358. {
  359. CWinApp * pApp = ::AfxGetApp();
  360. ASSERT( pApp != NULL );
  361. ASSERT( pApp->m_pszRegistryKey != NULL );
  362. ASSERT( pApp->m_pszRegistryKey[0] != _T('') );
  363. ASSERT( pApp->m_pszProfileName != NULL );
  364. ASSERT( pApp->m_pszProfileName[0] != _T('') );
  365. VERIFY(
  366. CExtControlBar::ProfileBarStateSave(
  367. this,
  368. pApp->m_pszRegistryKey,
  369. pApp->m_pszProfileName,
  370. pApp->m_pszProfileName
  371. )
  372. );
  373. VERIFY(
  374. g_PaintManager.PaintManagerStateSave(
  375. pApp->m_pszRegistryKey,
  376. pApp->m_pszProfileName,
  377. pApp->m_pszProfileName
  378. )
  379. );
  380. g_CmdManager->ProfileWndRemove( GetSafeHwnd() );
  381. return CExtNCW < CMDIFrameWnd > :: DestroyWindow();
  382. }
  383. void CMainFrame::ActivateFrame(int nCmdShow) 
  384. {
  385. // window placement persistence
  386. if( m_dataFrameWP.showCmd != SW_HIDE )
  387. {
  388. SetWindowPlacement( &m_dataFrameWP );
  389. CExtNCW < CMDIFrameWnd > :: ActivateFrame( m_dataFrameWP.showCmd );
  390. m_dataFrameWP.showCmd = SW_HIDE;
  391. return;
  392. }
  393. CExtNCW < CMDIFrameWnd > :: ActivateFrame( nCmdShow );
  394. }
  395. LRESULT CMainFrame::OnExtMenuPrepare(WPARAM wParam, LPARAM lParam)
  396. {
  397. wParam;
  398. lParam;
  399. //////////////////////////////////////////////////////////////////////////
  400. // Add "Windows..." command
  401. //////////////////////////////////////////////////////////////////////////
  402. CExtPopupMenuWnd::MsgPrepareMenuData_t * pData =
  403. reinterpret_cast
  404. < CExtPopupMenuWnd::MsgPrepareMenuData_t * >
  405. ( wParam );
  406. ASSERT( pData != NULL );
  407. CExtPopupMenuWnd * pPopup = pData->m_pPopup;
  408. ASSERT( pPopup != NULL );
  409. INT nItemPos;
  410. INT nNewPos = -1;
  411. nItemPos = pPopup->ItemFindPosForCmdID( __ID_MDIWND_DLGWINDOWS );
  412. if( nItemPos > 0 )
  413. {
  414. // "More Windows..." command found
  415. pPopup->ItemRemove( nItemPos );
  416. nNewPos = nItemPos;
  417. }
  418. else
  419. {
  420. int nMaxCmdID = 0;
  421. for( int nCmdID = __ID_MDIWNDLIST_FIRST; nCmdID <= __ID_MDIWNDLIST_LAST; nCmdID++ ){
  422. nItemPos = pPopup->ItemFindPosForCmdID( nCmdID );
  423. if( nItemPos > 0 ){
  424. if( nCmdID > nMaxCmdID ){
  425. nMaxCmdID = nCmdID;
  426. nNewPos = nItemPos;
  427. }
  428. }
  429. }
  430. if( nNewPos > 0 ){
  431. pPopup->ItemInsert(
  432. (UINT)CExtPopupMenuWnd::TYPE_SEPARATOR,
  433. ++nNewPos
  434. );
  435. nNewPos++;
  436. }
  437. }
  438. if( nNewPos > 0 )
  439. {
  440. UINT nCmdID = ID_WINDOWS_LIST;
  441. CExtCmdItem * pCmdItem =
  442. g_CmdManager->CmdGetPtr(
  443. g_CmdManager->ProfileNameFromWnd( this->GetSafeHwnd() ),
  444. nCmdID
  445. );
  446. if( pCmdItem == NULL ){
  447. pCmdItem = 
  448. g_CmdManager->CmdAllocPtr( 
  449. g_CmdManager->ProfileNameFromWnd( this->GetSafeHwnd() ), 
  450. nCmdID 
  451. );
  452. }
  453. ASSERT( pCmdItem != NULL );
  454. if( pCmdItem != NULL )
  455. {
  456. CExtSafeString sMoreWindows(_T("Windows..."));
  457. CExtSafeString sManageWindows(_T("Manages the currently open windows"));
  458. pCmdItem->m_sMenuText = sMoreWindows;
  459. pCmdItem->m_sToolbarText = pCmdItem->m_sMenuText;
  460. pCmdItem->m_sTipTool = sManageWindows;
  461. pCmdItem->m_sTipStatus = pCmdItem->m_sTipTool;
  462. pCmdItem->StateSetBasic( true );
  463. pPopup->ItemInsert(
  464. nCmdID,
  465. nNewPos,
  466. sMoreWindows,
  467. NULL,
  468. m_hWnd
  469. );
  470. }
  471. }
  472. return 1;
  473. }
  474. BOOL CMainFrame::OnCmdMsg(UINT nID, int nCode, void* pExtra, AFX_CMDHANDLERINFO* pHandlerInfo) 
  475. {
  476. if( nCode == CN_COMMAND )
  477. {
  478. if( nID == ID_WINDOWS_LIST )
  479. {
  480. CMyMdiWindowsListDlg dlgMdiWindowsList( this );
  481. dlgMdiWindowsList.DoModal();
  482. return TRUE;
  483. }
  484. }
  485. if( nID == ID_EDIT_COPY )
  486. {
  487. if( m_wndLogCtrl0.GetSafeHwnd() != NULL
  488. && ::IsWindow(m_wndLogCtrl0.GetSafeHwnd())
  489. && m_wndLogCtrl0.IsWindowVisible()
  490. && GetFocus()->GetSafeHwnd() == m_wndLogCtrl0.GetSafeHwnd()
  491. && m_wndLogCtrl0.OnCmdMsg(nID,nCode,pExtra,pHandlerInfo)
  492. )
  493. return TRUE;
  494. if( m_wndLogCtrl1.GetSafeHwnd() != NULL
  495. && ::IsWindow(m_wndLogCtrl1.GetSafeHwnd())
  496. && m_wndLogCtrl1.IsWindowVisible()
  497. && GetFocus()->GetSafeHwnd() == m_wndLogCtrl1.GetSafeHwnd()
  498. && m_wndLogCtrl1.OnCmdMsg(nID,nCode,pExtra,pHandlerInfo)
  499. )
  500. return TRUE;
  501. if( m_wndLogCtrl2.GetSafeHwnd() != NULL
  502. && ::IsWindow(m_wndLogCtrl2.GetSafeHwnd())
  503. && m_wndLogCtrl2.IsWindowVisible()
  504. && GetFocus()->GetSafeHwnd() == m_wndLogCtrl2.GetSafeHwnd()
  505. && m_wndLogCtrl2.OnCmdMsg(nID,nCode,pExtra,pHandlerInfo)
  506. )
  507. return TRUE;
  508. if( m_wndLogCtrl3.GetSafeHwnd() != NULL
  509. && ::IsWindow(m_wndLogCtrl3.GetSafeHwnd())
  510. && m_wndLogCtrl3.IsWindowVisible()
  511. && GetFocus()->GetSafeHwnd() == m_wndLogCtrl3.GetSafeHwnd()
  512. && m_wndLogCtrl3.OnCmdMsg(nID,nCode,pExtra,pHandlerInfo)
  513. )
  514. return TRUE;
  515. if( m_wndLogCtrl4.GetSafeHwnd() != NULL
  516. && ::IsWindow(m_wndLogCtrl4.GetSafeHwnd())
  517. && m_wndLogCtrl4.IsWindowVisible()
  518. && GetFocus()->GetSafeHwnd() == m_wndLogCtrl4.GetSafeHwnd()
  519. && m_wndLogCtrl4.OnCmdMsg(nID,nCode,pExtra,pHandlerInfo)
  520. )
  521. return TRUE;
  522. if( m_wndLogCtrl5.GetSafeHwnd() != NULL
  523. && ::IsWindow(m_wndLogCtrl5.GetSafeHwnd())
  524. && m_wndLogCtrl5.IsWindowVisible()
  525. && GetFocus()->GetSafeHwnd() == m_wndLogCtrl5.GetSafeHwnd()
  526. && m_wndLogCtrl5.OnCmdMsg(nID,nCode,pExtra,pHandlerInfo)
  527. )
  528. return TRUE;
  529. } // if( nID == ID_EDIT_COPY )
  530. return CExtNCW < CMDIFrameWnd > :: OnCmdMsg( nID, nCode, pExtra, pHandlerInfo );
  531. }