gusucode.com > 一个相对很完善的数据挖掘系统源码程序 > 一个相对很完善的数据挖掘系统源码程序/Discover/MainFrm.cpp
// MainFrm.cpp : implementation of the CMainFrame class // #include "stdafx.h" #include "Discover.h" #include "MainFrm.h" //added from TabWnd-BGN #include "TreeViewDataManage.h" #include "TreeViewDMfunction.h" #include "TreeViewResource.h" #include "ClassTree.h" //#include "DummyTree.h" #include "DummyList.h" #include "DummyEdit.h" #include "DummyForm.h" //#include "colledoc.h" #include <afxtempl.h> #include <afxpriv.h> //added from TabWnd-END #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CMainFrame IMPLEMENT_DYNCREATE(CMainFrame, CFrameWnd) BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd) //{{AFX_MSG_MAP(CMainFrame) ON_WM_CREATE() ON_COMMAND(ID_VIEW_OUT, OnViewOut) ON_UPDATE_COMMAND_UI(ID_VIEW_OUT, OnUpdateViewOut) ON_COMMAND(ID_VIEW_DELETE, OnViewDelete) ON_COMMAND(ID_TEST, OnTest) ON_COMMAND(ID_TEST_MoveBar, OnTESTMoveBar) ON_UPDATE_COMMAND_UI(ID_VIEW_DELETE, OnUpdateViewDelete) ON_COMMAND(ID_VIEW_ADDEDIT, OnViewAddedit) ON_COMMAND(ID_VIEW_PANE_TOP, OnViewPaneTop) ON_COMMAND(ID_TEST_TREE, OnTestTree) //}}AFX_MSG_MAP // Global help commands //ON_COMMAND(ID_HELP_FINDER, CFrameWnd::OnHelpFinder) //ON_COMMAND(ID_HELP, CFrameWnd::OnHelp) //ON_COMMAND(ID_CONTEXT_HELP, CFrameWnd::OnContextHelp) //ON_COMMAND(ID_DEFAULT_HELP, CFrameWnd::OnHelpFinder) ON_UPDATE_COMMAND_UI(ID_INDICATOR_RECORDCOUNT, OnUpdateIndicatorRECORDCOUNT) ON_UPDATE_COMMAND_UI(ID_INDICATOR_RECORDROWID, OnUpdateIndicatorRECORDROWID) END_MESSAGE_MAP() static UINT indicators[] = { ID_SEPARATOR, // status line indicator // ID_INDICATOR_CARET, //line&column number ID_INDICATOR_RECORDROWID, ID_INDICATOR_RECORDCOUNT, // ID_SEPARATOR, ID_INDICATOR_CAPS, ID_INDICATOR_NUM, ID_INDICATOR_SCRL, }; ///////////////////////////////////////////////////////////////////////////// // CMainFrame construction/destruction CMainFrame::CMainFrame() { } CMainFrame::~CMainFrame() { } int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) { if (CFrameWnd::OnCreate(lpCreateStruct) == -1) return -1; if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) || !m_wndToolBar.LoadToolBar(IDR_MAINFRAME)) { TRACE0("Failed to create toolbar\n"); return -1; // fail to create } m_wndToolBar.ModifyStyle(0,TBSTYLE_FLAT);//设置工具栏为平面格式 if (!m_wndStatusBar.Create(this) || !m_wndStatusBar.SetIndicators(indicators, sizeof(indicators)/sizeof(UINT))) { TRACE0("Failed to create status bar\n"); return -1; // fail to create } m_ImageList.Create(IDB_IMAGELIST, 13, 1, RGB(0,255,0)); m_ImageListOut.Create(IDB_IMAGELIST, 13, 1, RGB(0,255,0)); { m_wndWorkspace.SetBtnImageList (&m_ImageList); // m_wndWorkspace.SetMenuID(IDR_POPUP); // Initialize dialog bar m_wndWorkspace if (!m_wndWorkspace.Create(this, CG_ID_VIEW_WORKSPACE, _T("Workspace"), CSize(220,200))) { TRACE0("Failed to create dialog bar m_wndWorkspace\n"); return -1; // fail to create } // Add the views to the tab control. m_wndWorkspace.AddView(_T("DataManage"),RUNTIME_CLASS(CTreeViewDataManage)); //m_wndWorkspace.AddView(_T("Resource"), RUNTIME_CLASS(CTreeViewResource)); m_wndWorkspace.AddView(_T("DataMine"),RUNTIME_CLASS(CTreeViewDMfunction)); // Define the image list to use with the tab control m_TabImages.Create (IDB_IL_TAB, 16, 1, RGB(0,255,0)); m_wndWorkspace.SetTabImageList(&m_TabImages); // allow bar to be resized when floating m_wndWorkspace.SetBarStyle(m_wndWorkspace.GetBarStyle() | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC ); m_wndWorkspace.ModifyTabStyle(TCS_BUTTONS, TCS_TABS,NULL ); m_wndWorkspace.EnableDocking(CBRS_ALIGN_ANY); EnableDocking(CBRS_ALIGN_ANY); DockControlBar(&m_wndWorkspace, AFX_IDW_DOCKBAR_LEFT); } {//added by MZQ m_wndWorkspaceOut.SetBtnImageList (&m_ImageListOut); m_wndWorkspaceOut.SetMenuID(IDR_POPUP); // Initialize dialog bar m_wndWorkspaceOut if (!m_wndWorkspaceOut.Create(this, CG_ID_VIEW_OUTPUT, _T("OutPut"), CSize(220,140),WS_CHILD|WS_VISIBLE|CBRS_TOP)) { TRACE0("Failed to create dialog bar m_wndWorkspaceOut\n"); return -1; // fail to create } // Add the views to the tab control. m_wndWorkspaceOut.AddView(_T("Class"), RUNTIME_CLASS(CTreeViewDataManage)); m_wndWorkspaceOut.AddView(_T("Resource"), RUNTIME_CLASS(CTreeViewResource)); m_wndWorkspaceOut.AddView(_T("DataMine"), RUNTIME_CLASS(CTreeViewDMfunction)); m_wndWorkspaceOut.AddView(_T("Trees"), RUNTIME_CLASS(CClassTree)); m_wndWorkspaceOut.AddView(_T("Lists"), RUNTIME_CLASS(CDummyList)); m_wndWorkspaceOut.AddView(_T("Form"), RUNTIME_CLASS(CDummyForm)); m_wndWorkspaceOut.AddView(_T("Edit"), RUNTIME_CLASS(CDummyEdit)); // Define the image list to use with the tab control m_TabImagesOut.Create (IDB_IL_TAB_OUT, 16, 1, RGB(0,255,0)); m_wndWorkspaceOut.SetTabImageList(&m_TabImagesOut); // allow bar to be resized when floating m_wndWorkspaceOut.SetBarStyle(m_wndWorkspaceOut.GetBarStyle() | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC | CBRS_ALIGN_ANY ); m_wndWorkspaceOut.EnableDocking(CBRS_ALIGN_ANY); m_wndWorkspaceOut.ModifyTabStyle(0, TCS_BOTTOM,NULL );//增加此行将tab标签放在了下面 //m_wndWorkspace.ModifyTabStyle(TCS_BUTTONS, TCS_TABS,NULL ); //m_wndWorkspaceOut.ModifyTabStyle(NULL , TCS_TABS,NULL ); EnableDocking(CBRS_ALIGN_ANY); DockControlBar(&m_wndWorkspaceOut, AFX_IDW_DOCKBAR_BOTTOM); //屏蔽这一行将使得m_wndWorkspaceOut出现在右上方,解决只能出现在正上方的问题 CRect zzrect; m_wndWorkspaceOut.GetClientRect(zzrect); zzrect.OffsetRect(100,100); m_wndWorkspaceOut.m_pDockBar->MoveWindow(&zzrect,TRUE); // m_wndWorkspaceOut.GetWindowRect(m_wndWorkspaceOut.CurrentRect); }//added by MZQ m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY); // m_wndToolBar.ModifyStyle(TBSTYLE_FLAT,TBSTYLE_TRANSPARENT);//设置工具栏为平面格式 EnableDocking(CBRS_ALIGN_ANY); DockControlBar(&m_wndToolBar); //ShowControlBar(&m_wndWorkspaceOut,FALSE,FALSE); m_wndWorkspaceOut.GetWindowRect(m_wndWorkspaceOut.CurrentRect); return 0; } BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT /*lpcs*/, CCreateContext* pContext) { //VERIFY(m_wndSplitter.CreateStatic(this,1,2,WS_CHILD | WS_VISIBLE|WS_HSCROLL | WS_VSCROLL ,AFX_IDW_PANE_FIRST )); // VERIFY(m_wndSplitter.CreateStatic(this,1,2)); 对应m_wndSplitter // VERIFY(m_wndSplitter.CreateView(0,0,RUNTIME_CLASS(CDummyTree),CSize(100,100),pContext)); 对应m_wndSplitter // m_wndSplitter.SetColumnInfo(0,0,0);//pane 全缩减 // m_wndSplitter.GetPane(0,0)->MoveWindow(0,0,0,0,TRUE); // VERIFY(m_wndSplitter.CreateView(0,1,RUNTIME_CLASS(CDummyForm),CSize(0,0),pContext)); //屏蔽上面一行才能顺利建立下面子分割框架 //VERIFY(m_wndSplitter2.CreateStatic(&m_wndSplitter,2,1,WS_CHILD | WS_VISIBLE|WS_HSCROLL|WS_VSCROLL ,m_wndSplitter.IdFromRowCol(0,1) )); //VERIFY(m_wndSplitter2.CreateStatic(&m_wndSplitter,2,1,WS_CHILD | WS_VISIBLE,m_wndSplitter.IdFromRowCol(0,1) )); 对应m_wndSplitter VERIFY(m_wndSplitter2.CreateStatic(this,2,1)); VERIFY(m_wndSplitter2.CreateView(0,0,RUNTIME_CLASS(CDummyList),CSize(100,250),pContext)); // VERIFY(m_wndSplitter2.CreateView(1,0,RUNTIME_CLASS(CDummyList),CSize(100,100),pContext)); //屏蔽上面一行才能顺利建立下面子分割框架 VERIFY(m_wndSplitter3.CreateStatic(&m_wndSplitter2,1,2,WS_CHILD | WS_VISIBLE ,m_wndSplitter2.IdFromRowCol(1,0) )); //VERIFY(m_wndSplitter3.CreateView(0,0,RUNTIME_CLASS(CDummyTree),CSize(380,100),pContext)); VERIFY(m_wndSplitter3.CreateView(0,0,RUNTIME_CLASS(CClassTree),CSize(380,100),pContext)); VERIFY(m_wndSplitter3.CreateView(0,1,RUNTIME_CLASS(CDummyEdit),CSize(100,100),pContext)); // pTreeView=(CDummyTree*)this->m_wndSplitter.GetPane(0,0); 对应m_wndSplitter // pTreeView->ModifyStyle(0,TVS_HASBUTTONS|TVS_LINESATROOT|TVS_HASLINES); 对应m_wndSplitter // HTREEITEM hParent; //hParent=pTreeView->AddOneItem(LPCSTR("中国人")); //HTREEITEM hChild=pTreeView->AddOneItem(LPCSTR("四川省"),hParent); //HTREEITEM hgrand=pTreeView->AddOneItem(LPCSTR("成都市"),hChild); // hChild=pTreeView->AddOneItem(LPCSTR("浙江省"),hParent); // hgrand=pTreeView->AddOneItem(LPCSTR("杭州市"),hChild); // if (!m_tabCtrlBarData.Create(this, CG_ID_VIEW_WORKSPACE, // _T("Workspace2"), CSize(220,200))) // { // TRACE0("Failed to create dialog bar m_wndWorkspace\n"); // return -1; // fail to create // } return TRUE; } BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs) { if( !CFrameWnd::PreCreateWindow(cs) ) return FALSE; // TODO: Modify the Window class or styles here by modifying // the CREATESTRUCT cs cs.style |= WS_MAXIMIZE; return TRUE; } ///////////////////////////////////////////////////////////////////////////// // CMainFrame diagnostics #ifdef _DEBUG void CMainFrame::AssertValid() const { CFrameWnd::AssertValid(); } void CMainFrame::Dump(CDumpContext& dc) const { CFrameWnd::Dump(dc); } #endif //_DEBUG ///////////////////////////////////////////////////////////////////////////// // CMainFrame message handlers void CMainFrame::OnViewOut() { if(m_wndWorkspaceOut.IsWindowVisible()) { // if(m_wndWorkspaceOut.IsFloating()) // {m_wndWorkspaceOut.GetParentFrame()->ShowWindow (SW_HIDE); // m_wndWorkspaceOut.ShowWindow(SW_HIDE); // m_wndWorkspace.SendMessage(WM_PAINT); // } // else // { // m_wndWorkspaceOut.ShowWindow(SW_HIDE); // m_wndWorkspace.SendMessage(WM_PAINT); // } this->ShowControlBar(&m_wndWorkspaceOut,FALSE,FALSE); } else { // if(m_wndWorkspaceOut.IsFloating()) // { // this->ShowControlBar(&m_wndWorkspaceOut,TRUE,FALSE); // //m_wndWorkspaceOut.GetParentFrame()->ModifyStyle( WS_SYSMENU, 0, 0 ); // } // else // { // this->ShowControlBar(&m_wndWorkspaceOut,TRUE,FALSE); // } this->ShowControlBar(&m_wndWorkspaceOut,TRUE,FALSE); } } void CMainFrame::OnUpdateViewOut(CCmdUI* pCmdUI) { pCmdUI->SetCheck(m_wndWorkspaceOut.IsWindowVisible()); } //add by Mzq-OnViewDelete() void CMainFrame::OnViewDelete() { m_wndWorkspaceOut.RemoveView(m_wndWorkspaceOut.m_tabctrl.GetCurSel()); } void CMainFrame::OnTest(CCreateContext* pContext) { //m_wndSplitter3.DeleteView(0,1); //VERIFY(m_wndSplitter3.CreateView(0,1,RUNTIME_CLASS(CDummyTree),CSize(100,100),pContext)); m_wndWorkspaceOut.SetWindowPos(&wndTop, 50,60,300,200,SWP_SHOWWINDOW ); } void CMainFrame::OnTESTMoveBar() { CRect newRect; GetClientRect(newRect); CString strDis; strDis.Format("Client Rect \nleft:%d,top:%d,right:%d,bottom:%d",newRect.left,newRect.top,newRect.right,newRect.bottom); MessageBox(strDis); ClientToScreen(newRect); strDis.Format("Client Rect after ClientToScreen \nleft:%d,top:%d,right:%d,bottom:%d",newRect.left,newRect.top,newRect.right,newRect.bottom); MessageBox(strDis); GetWindowRect(newRect); strDis.Format("Window Rect \nleft:%d,top:%d,right:%d,bottom:%d",newRect.left,newRect.top,newRect.right,newRect.bottom); MessageBox(strDis); ScreenToClient(newRect); strDis.Format("Window Rect after ScreenToClient\nleft:%d,top:%d,right:%d,bottom:%d",newRect.left,newRect.top,newRect.right,newRect.bottom); MessageBox(strDis); GetClientRect(newRect); newRect.OffsetRect(-50,-20); strDis.Format("Client Rect After OffsetRect\nleft:%d,top:%d,right:%d,bottom:%d",newRect.left,newRect.top,newRect.right,newRect.bottom); MessageBox(strDis); //m_wndSplitter2.MoveWindow(newRect); } void CMainFrame::OnUpdateViewDelete(CCmdUI* pCmdUI) { pCmdUI->Enable(m_wndWorkspaceOut.m_views.GetCount()!=0); } void CMainFrame::OnViewAddedit() { //m_wndWorkspaceOut=new CMyTabCtrlBar(); //m_wndWorkspace.SetTabImageList(&m_TabImages); //m_wndWorkspaceOut.AddView(_T("NewEditView"),RUNTIME_CLASS(CDummyEdit)); m_wndWorkspaceOut.AddView(_T("newEdit"), RUNTIME_CLASS(CDummyEdit)); m_wndWorkspaceOut.SetActiveView(m_wndWorkspaceOut.m_views.GetCount()-1); CRect WndOutRect; m_wndWorkspaceOut.GetClientRect(WndOutRect); m_wndWorkspaceOut.MoveWindow(WndOutRect,TRUE); } void CMainFrame::RecalcLayout(BOOL bNotify) { // CRect rc; // m_wndWorkspaceOut.GetWindowRect(&rc); // rc.OffsetRect(1, 0); // FloatControlBar(&m_wndWorkspaceOut, CPoint(100,100)); // m_wndWorkspaceOut.SetWindowText("MyBar"); // DockControlBar(&m_wndWorkspaceOut, AFX_IDW_DOCKBAR_LEFT, &rc); // // DockControlBar(&m_wndWorkspaceOut, AFX_IDW_DOCKBAR_BOTTOM, &rc); //m_wndWorkspaceOut.m_nStateFlags =1|2; //m_wndWorkspaceOut.DelayShow(FALSE); //m_wndWorkspaceOut.GetParent(); // CRect newRect; // CMyTabCtrlBar *m_pwndWorkspaceOut=(CMyTabCtrlBar *)GetControlBar(CG_ID_VIEW_OUTPUT); // // //m_pwndWorkspaceOut=&m_wndWorkspaceOut; // m_pwndWorkspaceOut->GetWindowRect(newRect); // //this->m_wndWorkspaceOut // CString strDis; // strDis.Format("Client Rect \nleft:%d,top:%d,right:%d,bottom:%d",newRect.left,newRect.top,newRect.right,newRect.bottom); // //MessageBox(strDis); // //ReDockControlBar(&m_wndWorkspaceOut, (CDockBar*) m_wndWorkspaceOut.GetParent(),newRect); // // //CDockBar *DockBarWorkspaceOut=(CDockBar *)m_wndWorkspaceOut.GetParent(); // newRect.OffsetRect(200,200); // m_wndWorkspaceOut.MoveWindow(newRect,TRUE); // //DockBarWorkspaceOut->MoveWindow(newRect,TRUE); // //DockBarWorkspaceOut->ShowWindow(SW_SHOW ); CFrameWnd::RecalcLayout(bNotify); } void CMainFrame::OnViewPaneTop() { m_wndSplitter2.DeleteView(0, 0); m_wndSplitter2.CreateView(0,0,RUNTIME_CLASS(CDummyEdit),CSize(100,100),NULL); m_wndSplitter2.RecalcLayout(); } void CMainFrame::OnUpdateIndicatorRECORDROWID(CCmdUI *pCCmdUI) { int nItem ; pCCmdUI->Enable(TRUE); //pCCmdUI->SetText("Record ID:"); CMainFrame* appMainWnd=(CMainFrame*)AfxGetMainWnd();//得到主框架指针 CDummyList* listInPane=(CDummyList*)appMainWnd->m_wndSplitter2.GetPane(0,0);//得到CDummyList对象的指针 CListCtrl& lc=listInPane-> GetListCtrl();//得到列表控件CListCtrl的指针 CString ListCtlItemID; POSITION pos = lc.GetFirstSelectedItemPosition(); if (pos == NULL) TRACE0("No items were selected!\n"); nItem = lc.GetNextSelectedItem(pos); //nItem = lc.GetHotItem(); ListCtlItemID.Format("Record ID:%d",nItem+1); pCCmdUI->SetText(ListCtlItemID); } void CMainFrame::OnUpdateIndicatorRECORDCOUNT(CCmdUI *pCCmdUI) { pCCmdUI->Enable(TRUE); //pCCmdUI->SetText("Record COUNT:"); //pCCmdUI->SetCheck(); CMainFrame* appMainWnd=(CMainFrame*)AfxGetMainWnd();//得到主框架指针 CDummyList* listInPane=(CDummyList*)appMainWnd->m_wndSplitter2.GetPane(0,0);//得到CDummyList对象的指针 CListCtrl& lc=listInPane-> GetListCtrl();//得到列表控件CListCtrl的指针 CString ListCtlItemCount; ListCtlItemCount.Format("Record Count:%d",lc.GetItemCount()); pCCmdUI->SetText(ListCtlItemCount); } void CMainFrame::OnTestTree() { //CMainFrame* appMainWnd=(CMainFrame*)AfxGetMainWnd();//得到主框架指针 //CClassTree* listInPane=(CClassTree*)appMainWnd->m_wndSplitter3.GetPane(0,0);//得到CClassTree对象的指针 CClassTree* listInPane=(CClassTree*)m_wndSplitter3.GetPane(0,0);//得到CClassTree对象的指针 CTreeCtrl& lt=listInPane-> GetTreeCtrl();//得到树控件CTreeCtrl的指针 lt.DeleteAllItems(); // add the parent item, make it bold HTREEITEM htiParent = lt.InsertItem ("ID3-"); HTREEITEM htiChild; // child item htiChild = lt.InsertItem ("天气", 1, 1, htiParent, TVI_LAST); lt.SetItemState (htiChild, TVIS_BOLD, TVIS_BOLD); lt.InsertItem ("晴", 2, 3, htiChild, TVI_LAST); lt.InsertItem ("雨", 2, 3, htiChild, TVI_LAST); htiChild = lt.InsertItem ("气温", 1, 1, htiParent, TVI_LAST); lt.SetItemState (htiChild, TVIS_BOLD, TVIS_BOLD); htiChild = lt.InsertItem ("湿度", 1, 1, htiParent, TVI_LAST); lt.SetItemState (htiChild, TVIS_BOLD, TVIS_BOLD); lt.InsertItem ("正常", 2, 3, htiChild, TVI_LAST); lt.InsertItem ("高", 2, 3, htiChild, TVI_LAST); lt.Expand (htiParent, TVE_EXPAND); lt.Expand (htiChild, TVE_EXPAND); }