⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 treehierarchydlg.cpp

📁 这是国外的resip协议栈
💻 CPP
字号:
// TreeHierarchyDlg.cpp : implementation file//#include "stdafx.h"#include "resource.h"#include "TreeHierarchyDlg.h"#include "TestRunnerModel.h"#include "ResourceLoaders.h"#include <algorithm>#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE[] = __FILE__;#endif/////////////////////////////////////////////////////////////////////////////// TreeHierarchyDlg dialogTreeHierarchyDlg::TreeHierarchyDlg(CWnd* pParent )	: cdxCDynamicDialog(_T("CPP_UNIT_TEST_RUNNER_IDD_DIALOG_TEST_HIERARCHY"), pParent)  , m_selectedTest( NULL ){  ModifyFlags( flSWPCopyBits, 0 );      // anti-flickering option for resizing	//{{AFX_DATA_INIT(TreeHierarchyDlg)		// NOTE: the ClassWizard will add member initialization here	//}}AFX_DATA_INIT}void TreeHierarchyDlg::DoDataExchange(CDataExchange* pDX){	cdxCDynamicDialog::DoDataExchange(pDX);	//{{AFX_DATA_MAP(TreeHierarchyDlg)	DDX_Control(pDX, IDC_TREE_TEST, m_treeTests);	//}}AFX_DATA_MAP}BEGIN_MESSAGE_MAP(TreeHierarchyDlg, cdxCDynamicDialog)	//{{AFX_MSG_MAP(TreeHierarchyDlg)	//}}AFX_MSG_MAPEND_MESSAGE_MAP()void TreeHierarchyDlg::setRootTest( CPPUNIT_NS::Test *test ){  m_rootTest = test;}BOOL TreeHierarchyDlg::OnInitDialog() {  cdxCDynamicDialog::OnInitDialog();	  fillTree();  initializeLayout();  RestoreWindowPosition( TestRunnerModel::settingKey,                          TestRunnerModel::settingBrowseDialogKey );  	  return TRUE;}void TreeHierarchyDlg::initializeLayout(){  // see DynamicWindow/doc for documentation  AddSzControl( IDC_TREE_TEST, mdResize, mdResize );  AddSzControl( IDOK, mdRepos, mdNone );  AddSzControl( IDCANCEL, mdRepos, mdNone );}void TreeHierarchyDlg::fillTree(){  VERIFY( m_imageList.Create( _T("CPP_UNIT_TEST_RUNNER_IDB_TEST_TYPE"),                               16, 1, RGB( 255,0,255 ) ) );  m_treeTests.SetImageList( &m_imageList, TVSIL_NORMAL );  HTREEITEM hSuite = addTest( m_rootTest, TVI_ROOT );  m_treeTests.Expand( hSuite, TVE_EXPAND );}HTREEITEMTreeHierarchyDlg::addTest( CPPUNIT_NS::Test *test,                            HTREEITEM hParent ){  int testType = isSuite( test ) ? imgSuite : imgUnitTest;  HTREEITEM hItem = m_treeTests.InsertItem( CString(test->getName().c_str()),                                            testType,                                            testType,                                            hParent );  if ( hItem != NULL )  {    VERIFY( m_treeTests.SetItemData( hItem, (DWORD)test ) );    if ( isSuite( test ) )      addTestSuiteChildrenTo( test, hItem );  }  return hItem;}void TreeHierarchyDlg::addTestSuiteChildrenTo( CPPUNIT_NS::Test *suite,                                          HTREEITEM hItemSuite ){  Tests tests;  int childIndex = 0;  for ( ; childIndex < suite->getChildTestCount(); ++childIndex )    tests.push_back( suite->getChildTestAt( childIndex ) );  sortByName( tests );  for ( childIndex = 0; childIndex < suite->getChildTestCount(); ++childIndex )    addTest( suite->getChildTestAt( childIndex ), hItemSuite );}bool TreeHierarchyDlg::isSuite( CPPUNIT_NS::Test *test ){  return ( test->getChildTestCount() > 0  ||    // suite with test           test->countTestCases() == 0 );       // empty suite}struct PredSortTest{  bool operator()( CPPUNIT_NS::Test *test1, CPPUNIT_NS::Test *test2 ) const  {    bool isTest1Suite = TreeHierarchyDlg::isSuite( test1 );    bool isTest2Suite = TreeHierarchyDlg::isSuite( test2 );    if ( isTest1Suite  &&  !isTest2Suite )      return true;    if ( isTest1Suite  &&  isTest2Suite )      return test1->getName() < test2->getName();    return false;  }};void TreeHierarchyDlg::sortByName( Tests &tests ) const{  std::stable_sort( tests.begin(), tests.end(), PredSortTest() );}void TreeHierarchyDlg::OnOK() {  CPPUNIT_NS::Test *test = findSelectedTest();  if ( test == NULL )  {    AfxMessageBox( loadCString(IDS_ERROR_SELECT_TEST), MB_OK );    return;  }  m_selectedTest = test;  storeDialogBounds();  cdxCDynamicDialog::OnOK();}void TreeHierarchyDlg::OnCancel() {  storeDialogBounds();	cdxCDynamicDialog::OnCancel();}CPPUNIT_NS::Test *TreeHierarchyDlg::findSelectedTest(){  HTREEITEM hItem = m_treeTests.GetSelectedItem();  if ( hItem != NULL )  {    DWORD data;    VERIFY( data = m_treeTests.GetItemData( hItem ) );    return reinterpret_cast<CPPUNIT_NS::Test *>( data );  }  return NULL;}CPPUNIT_NS::Test *TreeHierarchyDlg::getSelectedTest() const{  return m_selectedTest;}void TreeHierarchyDlg::storeDialogBounds(){  StoreWindowPosition( TestRunnerModel::settingKey,                        TestRunnerModel::settingBrowseDialogKey );}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -