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

📄 mymdi.cpp

📁 用户管理系统
💻 CPP
字号:
// MyMdi.cpp: implementation of the CMyMdi class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "Kvip.h"
#include "MyMdi.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
BOOL CMyMdi::m_bExitCode = true;
void *CMyMdi::m_pMyMdi = NULL;
CMyMdi::CMyMdi()
{

}

CMyMdi::~CMyMdi()
{

}

////////////////////////////////////////////////////
//pName         窗口名称 
//pNewViewClass 窗口RUNTIME_CLASS名称
//nIcon         窗口图标ID
//pParentWnd    父窗口指针
//返回:
//    0 表示窗口已经存在 
//    1 打开窗口成功
//   -1 分配内存失败
//   -2 创建窗口失败
/////////////////////////////////////////////////////
int CMyMdi::Append(char *pName, 
				   CRuntimeClass* pNewViewClass,
				   UINT nIcon,
				   CWnd* pParentWnd,
				   UINT nID)
{
  CChildFrame *pView = (CChildFrame*)GetView(pName);
  if (pView)  //已存在
  {
	pView->MDIActivate();
	return 1;
  }
  pView=new CChildFrame;
  if (pView == NULL) return -1;
  tabMyMdi *pNewMdi =new tabMyMdi;
  if (pNewMdi == NULL) 
  {
	  delete pView;
	  return -1;
  }
  CCreateContext context;
  context.m_pNewViewClass=pNewViewClass;
//创建
  if(!pView->LoadFrame(nIcon,WS_OVERLAPPEDWINDOW|WS_MAXIMIZE,
	                   pParentWnd,&context))
		return -2;
  pNewMdi->pSubView = NULL;
  pNewMdi->pView = (CWnd *)pView;
  memcpy(pNewMdi->szName, pName, 64);
  pNewMdi->pNext = (tabMyMdi*)m_pMyMdi;
  m_pMyMdi = (void*)pNewMdi;
  pView->InitialUpdateFrame(NULL,true);  //真正创建
//  pNewMdi->pSubView = pView->GetDlgItem(nID);
  return 0;
}


/////////////////////////////////////////////
//pName 窗口名称
//返回窗口的索引
int CMyMdi::GetIndex(char *pName)
/////////////////////////////////////////////
{
  if(m_pMyMdi == NULL) return -1;
  tabMyMdi *pCur = (tabMyMdi*)m_pMyMdi;
  int i = 0;
  while(pCur)
  {
    if(strcmp(pName, pCur->szName) == 0)
      return i;
	pCur = pCur->pNext;
	i++;
  }
  return -1;
}



///////////////////////////////////////////////////
//pView 窗口指针
//返回窗口名称
char *CMyMdi::GetName(CWnd *pView)
///////////////////////////////////////////////////
{
/*  for (int i = 0; i < m_caView.GetSize(); i++)
  {
     if (m_caView.GetAt(i) == pView)  //有发现
		 return m_caName.GetAt(i);
  }
  return _T("");
*/
  if(m_pMyMdi == NULL) return NULL;
  tabMyMdi *pCur = (tabMyMdi*)m_pMyMdi;
  while(pCur)
  {
    if(pView == pCur->pView)
      return pCur->szName;
	pCur = pCur->pNext;
  }
  return NULL;
}
///////////////////////////////////////////////////
//pView 窗口指针
//返回窗口名称
CWnd *CMyMdi::GetView(char *pName)
///////////////////////////////////////////////////
{
  if(m_pMyMdi == NULL) return NULL;
  tabMyMdi *pCur = (tabMyMdi*)m_pMyMdi;
  while(pCur)
  {
    if(strcmp(pName, pCur->szName)==0)
      return pCur->pView;
	pCur = pCur->pNext;
  }
  return NULL;
}
///////////////////////////////////////////////////
//pView 窗口指针
//返回子窗口指针
CWnd *CMyMdi::GetSubView(CWnd *pView)
///////////////////////////////////////////////////
{
  if(m_pMyMdi == NULL) return NULL;
  tabMyMdi *pCur = (tabMyMdi*)m_pMyMdi;
  while(pCur)
  {
    if(pView == pCur->pView)
      return pCur->pSubView;
	pCur = pCur->pNext;
  }
  return NULL;
}
///////////////////////////////////////////////////
//设置子窗口指针
//pView 窗口指针
//子窗口指针
BOOL CMyMdi::SetSubView(CWnd *pView, CWnd *pDlg)
///////////////////////////////////////////////////
{
  if(m_pMyMdi == NULL) return false;
  tabMyMdi *pCur = (tabMyMdi*)m_pMyMdi;
  while(pCur)
  {
    if(pView == pCur->pView)
	{
      pCur->pSubView = pDlg;
	  return true;
	}
	pCur = pCur->pNext;
  }
  return false;
}

////////////////////////////////////////////////////
//pView 窗口指针
//删除子窗口
BOOL CMyMdi::Delete(CWnd *pView)
////////////////////////////////////////////////////
{
  if(m_pMyMdi == NULL) return false;
  tabMyMdi *pCur = (tabMyMdi*)m_pMyMdi;
  tabMyMdi *pBefore = NULL;
  while(pCur)
  {
    if(pView == pCur->pView)
	{
	  if(pBefore == NULL) //首个
	  {
		m_pMyMdi = (void*)((tabMyMdi*)m_pMyMdi)->pNext;
	  }
	  else
	  {
		pBefore->pNext = pCur->pNext;
	  }
      delete pCur;
	  return true;
	}
	pBefore = pCur;
	pCur = pCur->pNext;
  }
  return FALSE;
}

//////////////////////////////////////////
//pName 窗口名称
//删除窗口登记
BOOL CMyMdi::Delete(char *pName)
//////////////////////////////////////////
{
  if(m_pMyMdi == NULL) return false;
  tabMyMdi *pCur = (tabMyMdi*)m_pMyMdi;
  tabMyMdi *pBefore = NULL;
  while(pCur)
  {
    if(strcmp(pName,pCur->szName)==0)
	{
	  if(pBefore == NULL) //首个
	  {
		m_pMyMdi = (void*)((tabMyMdi*)m_pMyMdi)->pNext;
	  }
	  else
	  {
		pBefore->pNext = pCur->pNext;
	  }
      delete pCur;
	}
	pBefore = pCur;
	pCur = pCur->pNext;
	return true;
  }
  return FALSE;
}
//////////////////////////////////////////
//pName 窗口名称
//删除窗口登记
int CMyMdi::GetCount()
//////////////////////////////////////////
{
  if(m_pMyMdi == NULL) return -1;
  tabMyMdi *pCur = (tabMyMdi*)m_pMyMdi;
  int i = 0;
  while(pCur)
  {
	pCur = pCur->pNext;
	i++;
  }
  return i;
//  return m_caName.GetSize();
}

BOOL CMyMdi::MainClose(BOOL bMsg)
{
  m_bExitCode = true;
  if(m_pMyMdi == NULL)return true;
  tabMyMdi *pCur = (tabMyMdi*)m_pMyMdi;
  CWnd *pView;
  while(pCur)
  {
    pView = pCur->pView;
	pCur = pCur->pNext;	if(pView)
	  pView->SendMessage(WM_CLOSE, 0, 0);
	if (GetExitCode()==false) return false;
  }
  return true;
}
BOOL CMyMdi::ChildClose(CWnd *pView)
{
    m_bExitCode = true;
	CWnd *pSubView = GetSubView(pView);
	if (pSubView)
	   pSubView->SendMessage(WM_CLOSE, 0,0);
	if(GetExitCode())
	{
	   Delete(pView);
	   return true;
	}
	return false;
}
void CMyMdi::DeleteAll()
{
  if(m_pMyMdi == NULL) return ;
  tabMyMdi *pCur = (tabMyMdi*)m_pMyMdi;
  tabMyMdi *pBefore;
  while(pCur)
  {
	pBefore = pCur;
	pCur = pBefore->pNext;
	delete pBefore;
  }

}

⌨️ 快捷键说明

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