📄 mainfrm.cpp
字号:
// MainFrm.cpp : implementation of the CMainFrame class
//
#include "stdafx.h"
#include "AlgorithmicDesign.h"
#include "MainFrm.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
#define SAFE_CHECKWND(p) if(NULL != p && ::IsWindow(p->GetSafeHwnd()))
/////////////////////////////////////////////////////////////////////////////
// CMainFrame
IMPLEMENT_DYNAMIC(CMainFrame, CFrameWnd)
BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
//{{AFX_MSG_MAP(CMainFrame)
ON_WM_CREATE()
ON_WM_SETFOCUS()
ON_WM_SIZE()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CMainFrame construction/destruction
CMainFrame::CMainFrame()
{
pPackgreedyFrame=NULL;
pMintreegreedyFrame=NULL;
pPackDemarkFrame=NULL;
pPackDynamicFrame=NULL;
m_selectnumber=0;
try
{
Create(NULL, "算法设计可视化演示",
WS_SYSMENU , rectDefault, NULL, NULL, NULL);
}
catch(...)
{
//::AfxMessageBox("无法创建主窗口", MB_OK | MB_ICONERROR);
}
// TODO: add member initialization code here
}
CMainFrame::~CMainFrame()
{
}
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
return -1;
this->ModifyStyleEx(WS_EX_OVERLAPPEDWINDOW , 0, 0);
// create a view to occupy the client area of the frame
/*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
}
*
// TODO: Delete these three lines if you don't want the toolbar to
// be dockable
m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
EnableDocking(CBRS_ALIGN_ANY);
DockControlBar(&m_wndToolBar);*/
return 0;
}
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.dwExStyle &= ~WS_EX_CLIENTEDGE;
cs.lpszClass = AfxRegisterWndClass(0);
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::OnSetFocus(CWnd* pOldWnd)
{
// forward focus to the view window
}
BOOL CMainFrame::OnCmdMsg(UINT nID, int nCode, void* pExtra, AFX_CMDHANDLERINFO* pHandlerInfo)
{
// let the view have first crack at the command
// otherwise, do default handling
return CFrameWnd::OnCmdMsg(nID, nCode, pExtra, pHandlerInfo);
}
BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
{
// TODO: Add your specialized code here and/or call the base class
if (NULL == m_wndSplitter.CreateStatic(this, 2, 1))
return FALSE;
m_wndSplitter.CreateView(0, 0, RUNTIME_CLASS(CMainTreeView),
CSize(350,100), pContext);
m_wndSplitter.CreateView(1, 0, RUNTIME_CLASS(CMainListView),
CSize(250,500), pContext);
p_MaintreeView =(CMainTreeView*)m_wndSplitter.GetPane(0, 0);
p_MainlistView =(CMainListView*)m_wndSplitter.GetPane(1, 0);
RECT rect;
memset(&rect, 0, sizeof(RECT));
m_static.Create("",WS_VISIBLE,CRect(0,0,rect.right-rect.left,10),this,118);
//return TRUE;
return CFrameWnd::OnCreateClient(lpcs, pContext);
}
void CMainFrame::OnSize(UINT nType, int cx, int cy)
{
CFrameWnd::OnSize(nType, cx, cy);
// TODO: Add your message handler code here
HICON hicon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
SetIcon(hicon,TRUE);
RECT rect;
memset(&rect, 0, sizeof(RECT));
this->GetClientRect(&rect);
int height=rect.bottom-rect.top;
rect.top =0;//ReBarHeight;
rect.bottom=height/6;
p_MaintreeView->MoveWindow(&rect, TRUE);
rect.top=height/6+10;
rect.bottom=rect.top+5*height/6;
p_MainlistView->MoveWindow(&rect, TRUE);
rect.top=height/6;
rect.bottom=rect.top+10;
rect.left=-10;
m_static.MoveWindow(&rect, TRUE);
//m_wndSplitter.ShowWindow(SW_HIDE);
}
void CMainFrame::ShowPackGreedyFrame(BOOL bShow, DWORD mnumber)
{
if(mnumber!=-1)
m_selectnumber=mnumber;
switch (m_selectnumber)
{
case 0:
{
if(bShow)
{
if(NULL == pPackgreedyFrame)
{
// this->ShowWindow(SW_HIDE);
if(NULL != pPackgreedyFrame || ::IsWindow(pPackgreedyFrame->GetSafeHwnd()))
{
return ;
}
const int nReBarHeight =0;
RECT rect;
memset(&rect, 0, sizeof(RECT));
// this->GetClientRect(&rect);
// rect.top =0;//nReBarHeight;
CClientDC dc(this);
int width=dc.GetDeviceCaps(HORZRES);
int height=dc.GetDeviceCaps(VERTRES);
rect.left=0;
rect.top=0;
rect.bottom=height;
rect.right=width;
this->GetClientRect(&rect);
pPackgreedyFrame =new CPackGreedyFrame(this, rect);
SAFE_CHECKWND(pPackgreedyFrame)
{
pPackgreedyFrame->MoveWindow(&rect);
}
}
SAFE_CHECKWND(pPackgreedyFrame)
{
pPackgreedyFrame->ShowWindow(SW_SHOWMAXIMIZED);
// RECT rect;
//pPackgreedyFrame->GetClientRect(&rect);
//rect.top=rect.top+50;
//pPackgreedyFrame->MoveWindow(&rect);
}
}
else
{
SAFE_CHECKWND(pPackgreedyFrame)
{
pPackgreedyFrame->ShowWindow(SW_HIDE);
pPackgreedyFrame->SendMessage(WM_DESTROY, 0, 0);
delete pPackgreedyFrame;
pPackgreedyFrame =NULL;
}
SAFE_CHECKWND(this)
{
this->ShowWindow(SW_SHOW);
}
}
break;
}
case 1:
{
if(bShow)
{
if(NULL == pMintreegreedyFrame)
{
// this->ShowWindow(SW_HIDE);
if(NULL != pMintreegreedyFrame || ::IsWindow(pMintreegreedyFrame->GetSafeHwnd()))
{
return ;
}
const int nReBarHeight =0;
RECT rect;
memset(&rect, 0, sizeof(RECT));
// this->GetClientRect(&rect);
// rect.top =0;//nReBarHeight;
CClientDC dc(this);
int width=dc.GetDeviceCaps(HORZRES);
int height=dc.GetDeviceCaps(VERTRES);
rect.left=0;
rect.top=0;
rect.bottom=height;
rect.right=width;
this->GetClientRect(&rect);
pMintreegreedyFrame =new CMinspantreeGreedyFrame(this, rect);
SAFE_CHECKWND(pMintreegreedyFrame)
{
pMintreegreedyFrame->MoveWindow(&rect);
}
}
SAFE_CHECKWND(pMintreegreedyFrame)
{
pMintreegreedyFrame->ShowWindow(SW_SHOWMAXIMIZED);
// RECT rect;
//pPackgreedyFrame->GetClientRect(&rect);
//rect.top=rect.top+50;
//pPackgreedyFrame->MoveWindow(&rect);
}
}
else
{
SAFE_CHECKWND(pMintreegreedyFrame)
{
pMintreegreedyFrame->ShowWindow(SW_HIDE);
pMintreegreedyFrame->SendMessage(WM_DESTROY, 0, 0);
delete pMintreegreedyFrame;
pMintreegreedyFrame =NULL;
}
SAFE_CHECKWND(this)
{
this->ShowWindow(SW_SHOW);
}
}
break;
}
case 2:
{
if(bShow)
{
if(NULL == pPackDemarkFrame)
{
// this->ShowWindow(SW_HIDE);
if(NULL != pPackDemarkFrame || ::IsWindow(pPackDemarkFrame->GetSafeHwnd()))
{
return ;
}
const int nReBarHeight =0;
RECT rect;
memset(&rect, 0, sizeof(RECT));
// this->GetClientRect(&rect);
// rect.top =0;//nReBarHeight;
CClientDC dc(this);
int width=dc.GetDeviceCaps(HORZRES);
int height=dc.GetDeviceCaps(VERTRES);
rect.left=0;
rect.top=0;
rect.bottom=height;
rect.right=width;
this->GetClientRect(&rect);
pPackDemarkFrame =new CPackDemarkFrame(this, rect);
SAFE_CHECKWND(pPackDemarkFrame)
{
pPackDemarkFrame->MoveWindow(&rect);
}
}
SAFE_CHECKWND(pPackDemarkFrame)
{
pPackDemarkFrame->ShowWindow(SW_SHOWMAXIMIZED);
// RECT rect;
//pPackgreedyFrame->GetClientRect(&rect);
//rect.top=rect.top+50;
//pPackgreedyFrame->MoveWindow(&rect);
}
}
else
{
SAFE_CHECKWND(pPackDemarkFrame)
{
pPackDemarkFrame->ShowWindow(SW_HIDE);
pPackDemarkFrame->SendMessage(WM_DESTROY, 0, 0);
delete pPackDemarkFrame;
pPackDemarkFrame =NULL;
}
SAFE_CHECKWND(this)
{
this->ShowWindow(SW_SHOW);
}
}
break;
}
case 4:
{
if(bShow)
{
if(NULL == pPackDynamicFrame)
{
// this->ShowWindow(SW_HIDE);
if(NULL != pPackDynamicFrame || ::IsWindow(pPackDynamicFrame->GetSafeHwnd()))
{
return ;
}
const int nReBarHeight =0;
RECT rect;
memset(&rect, 0, sizeof(RECT));
// this->GetClientRect(&rect);
// rect.top =0;//nReBarHeight;
CClientDC dc(this);
int width=dc.GetDeviceCaps(HORZRES);
int height=dc.GetDeviceCaps(VERTRES);
rect.left=0;
rect.top=0;
rect.bottom=height;
rect.right=width;
this->GetClientRect(&rect);
pPackDynamicFrame =new CPackDynamicFrame(this, rect);
SAFE_CHECKWND(pPackDynamicFrame)
{
pPackDynamicFrame->MoveWindow(&rect);
}
}
SAFE_CHECKWND(pPackDynamicFrame)
{
pPackDynamicFrame->ShowWindow(SW_SHOWMAXIMIZED);
}
}
else
{
SAFE_CHECKWND(pPackDynamicFrame)
{
pPackDynamicFrame->ShowWindow(SW_HIDE);
pPackDynamicFrame->SendMessage(WM_DESTROY, 0, 0);
delete pPackDynamicFrame;
pPackDynamicFrame =NULL;
}
SAFE_CHECKWND(this)
{
this->ShowWindow(SW_SHOW);
}
}
break;
}
default:
break;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -