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

📄 cmmenu.cpp

📁 本程序是一个最近邻分类算法的演示程序
💻 CPP
📖 第 1 页 / 共 2 页
字号:
    pDC->SetTextColor(RGB(0,0,0));
	pDC->DrawText(sText, &rect, DT_LEFT | DT_VCENTER | DT_SINGLELINE);
	
    
}
void	CMMenu::DrawGray(CDC* pDC, CRect rect, CString sText)
{
	rect.DeflateRect(8, 0, 0, 0);
	rect.DeflateRect(8, 0, 0, 0);
	CRect	rt(rect);
	int nMode =pDC->SetBkMode(TRANSPARENT);
	pDC->SetTextColor(RGB(127,127,127));
	pDC->DrawText("    "+sText,&rect,DT_EXPANDTABS|DT_VCENTER|DT_SINGLELINE);
	
}
void	CMMenu::DrawItem(LPDRAWITEMSTRUCT  lpDIS)
{	
	CDC* pDC = CDC::FromHandle(lpDIS->hDC);	// get dc
	VERIFY(pDC);pDC->SetBkMode(TRANSPARENT);// get position
	CRect rcItem = lpDIS->rcItem;// get states
	UINT uState = lpDIS->itemState;	// the data of menu item is NULL then return
	if(lpDIS->itemData == NULL)	return;
	CString strText     = ((CMenuItemContext*)(lpDIS->itemData))->strText;
	UINT nMenuID        = ((CMenuItemContext*)(lpDIS->itemData))->nMenuID;
	CRect rcIcon1(rcItem);
    rcIcon1.top=rcIcon1.top+3;
	rcIcon1.bottom=rcIcon1.bottom-1;
	rcIcon1.left = rcIcon1.left +2;
    rcIcon1.right=rcIcon1.left+32;
	CRect rcText(rcItem);
	rcText.left  = rcIcon1.right;
    	 rcItem.top=rcItem.top+1;
    rcItem.bottom=rcItem.bottom;
	switch(nMenuID)
	{
	case -2:// -2:顶层菜单条   
		if(uState&ODS_SELECTED)
		{
	        
			if(FMouse2)
			{
                 FMouse2=false;
			}
            if(FMouse1)
			{
                 FMouse1=false;
			}
            if(FMouse3)
			{
                 FMouse3=false;
			}
            if(FMouse4)
			{
                 FMouse4=false;
			}
           
			DrawTop(pDC,rcItem,0,true);
            DrawText(pDC,rcItem,strText,true);
		}
		else
		{
		    
			  if(strText=="产生分类")
			  {
                 if(FMouse1)
				 {
				  DrawTop(pDC,rcItem,0,TRUE);
				 DrawText(pDC,rcItem,strText,true);
				 }
                 else
				 {
			     DrawTop(pDC,rcItem,1,FALSE);DrawText(pDC,rcItem,strText,false);
				 }
			  }
			   if(strText=="产生测试点")
			  {
                 if(FMouse2)
				 {
				  DrawTop(pDC,rcItem,0,TRUE);
				 DrawText(pDC,rcItem,strText,true);
				 }
                 else
				 {
			     DrawTop(pDC,rcItem,2,FALSE);DrawText(pDC,rcItem,strText,false);
				 }
			  }
             if(strText=="分类方法选择")
			  {
                 if(FMouse3)
				 {
				  DrawTop(pDC,rcItem,0,TRUE);
				 DrawText(pDC,rcItem,strText,true);
				 }
                 else
				 {
			     DrawTop(pDC,rcItem,3,FALSE);DrawText(pDC,rcItem,strText,false);
				 }
			  }
            if(strText=="性能分析")
			  {
                 if(FMouse4)
				 {
				  DrawTop(pDC,rcItem,0,TRUE);
				  DrawText(pDC,rcItem,strText,true);
				 }
                 else
				 {
			     DrawTop(pDC,rcItem,4,FALSE); DrawText(pDC,rcItem,strText,false);
				 }
			  }
			
		}
		
		break;
	case -1://-1:弹出菜单  
		strText= "\t   "+strText;
		if(uState&ODS_SELECTED)
			DrawBestRect(pDC,rcItem,0xff00ff,0xfffff,TRUE);
		else
			DrawTop(pDC,rcItem,0,TRUE);
		
		DrawText(pDC,rcText,strText,false);
		break;
	case 0://0:分隔条  
		rcText.top =rcText.Height()/2+rcText.top ;
		rcText.bottom =rcText.top +2;
		rcText.left +=2;
		rcText.right -=2;
		pDC->Draw3dRect(rcText,RGB(64,0,128),RGB(255,255,255));
		break;
	default://>0:一般的菜单			
		UINT count=GetMenuItemCount();
        
		if(uState&ODS_SELECTED)//被选择,
		{
			//DrawBGColor(pDC,rcItem,TRUE);
			DrawTop(pDC,rcItem,0,TRUE);
			DrawText(pDC,rcText,"       "+strText,true);
		}
		else
		{
			DrawBGColor(pDC,rcItem,FALSE);
			DrawText(pDC,rcText,"       "+strText,false);//
		}
	   if(strText=="产生分类一")
	   {
       pDC->DrawState(rcIcon1.TopLeft(), 
	                    rcIcon1.Size(), 
				        SSbicon, 
				         DSS_NORMAL|DST_ICON   , 
                 (CBrush*)NULL);
	   }
      if(strText=="产生分类二")
	   {
       pDC->DrawState(rcIcon1.TopLeft(), 
	                    rcIcon1.Size(), 
				        SSlicon, 
				         DSS_NORMAL|DST_ICON   , 
                 (CBrush*)NULL);
	   }
      if(strText=="产生分类三")
	   {
       pDC->DrawState(rcIcon1.TopLeft(), 
	                    rcIcon1.Size(), 
				        Seicon, 
				         DSS_NORMAL|DST_ICON   , 
                 (CBrush*)NULL);
	   }
     if(strText=="产生测试点")
	   {
          pDC->DrawState(rcIcon1.TopLeft(), 
	                    rcIcon1.Size(), 
				       Msicon, 
				         DSS_NORMAL|DST_ICON   , 
                 (CBrush*)NULL);
	   }
    if(strText=="1-NNR")
	   {
          pDC->DrawState(rcIcon1.TopLeft(), 
	                    rcIcon1.Size(), 
				       Meicon, 
				         DSS_NORMAL|DST_ICON   , 
                 (CBrush*)NULL);
	   }
if(strText=="K-NNR")
	   {
          pDC->DrawState(rcIcon1.TopLeft(), 
	                    rcIcon1.Size(), 
				       Tlicon, 
				         DSS_NORMAL|DST_ICON   , 
                 (CBrush*)NULL);
	   }
if(strText=="(K,K`)NNR")
	   {
          pDC->DrawState(rcIcon1.TopLeft(), 
	                    rcIcon1.Size(), 
				       Tiicon, 
				         DSS_NORMAL|DST_ICON   , 
                 (CBrush*)NULL);
	   }
if(strText=="1-NNR分析")
	   {
          pDC->DrawState(rcIcon1.TopLeft(), 
	                    rcIcon1.Size(), 
				       Clicon, 
				         DSS_NORMAL|DST_ICON   , 
                 (CBrush*)NULL);
	   }
     if(strText=="K-NNR分析")
	   {
          pDC->DrawState(rcIcon1.TopLeft(), 
	                    rcIcon1.Size(), 
				       Cticon, 
				         DSS_NORMAL|DST_ICON   , 
                 (CBrush*)NULL);
	   }
if(strText=="(K,K`)NNR分析")
	   {
          pDC->DrawState(rcIcon1.TopLeft(), 
	                    rcIcon1.Size(), 
				       Dbicon, 
				         DSS_NORMAL|DST_ICON   , 
                 (CBrush*)NULL);
	   }
if(strText=="交叉分析")
	   {
          pDC->DrawState(rcIcon1.TopLeft(), 
	                    rcIcon1.Size(), 
				       Dlicon, 
				         DSS_NORMAL|DST_ICON   , 
                 (CBrush*)NULL);
	   }
		break;
	}
}
int		CMMenu::GetIconIndexByID(UINT uID)
{	
	for(int i = 0; i < m_menuIDs.GetSize(); i ++)
	{
		if(uID == m_menuIDs[i])
		{
			ASSERT(i < m_ImageList.GetImageCount());
			return i;
		}
	}
	return -1;
}
BOOL CMMenu::ChangeMenu(HMENU hMenu)
{
   CMenu *pMenu = CMenu::FromHandle(hMenu);
   CMenuItemContext *lpMenu = new CMenuItemContext;
   lpMenu->nMenuID = pMenu->GetMenuItemID(1);
   pMenu->GetMenuString(1, lpMenu->strText, MF_BYPOSITION);
	
			pMenu->ModifyMenu(1, MF_BYPOSITION | MF_OWNERDRAW,
				0,LPCTSTR(lpMenu));
   delete lpMenu;
   return true;
}
void CMMenu::Seticon()
{
    HINSTANCE hInstResource = AfxFindResourceHandle(MAKEINTRESOURCE(IDR_MAINFRAME),
													RT_GROUP_ICON);
	SMicon= (HICON)::LoadImage(hInstResource/*AfxGetApp()->m_hInstance*/, MAKEINTRESOURCE(IDR_MAINFRAME), IMAGE_ICON, 0, 18, 0);
    hInstResource = AfxFindResourceHandle(MAKEINTRESOURCE(IDI_ICON1),
													RT_GROUP_ICON);
	SSbicon= (HICON)::LoadImage(hInstResource/*AfxGetApp()->m_hInstance*/, MAKEINTRESOURCE(IDI_ICON1), IMAGE_ICON, 29, 29, 0);
    hInstResource = AfxFindResourceHandle(MAKEINTRESOURCE(IDI_ICON2),
													RT_GROUP_ICON);
	SSlicon= (HICON)::LoadImage(hInstResource/*AfxGetApp()->m_hInstance*/, MAKEINTRESOURCE(IDI_ICON2), IMAGE_ICON, 29, 29, 0);
    hInstResource = AfxFindResourceHandle(MAKEINTRESOURCE(IDI_ICON3),
													RT_GROUP_ICON);
	Seicon= (HICON)::LoadImage(hInstResource/*AfxGetApp()->m_hInstance*/, MAKEINTRESOURCE(IDI_ICON3), IMAGE_ICON, 29, 29, 0);
   hInstResource = AfxFindResourceHandle(MAKEINTRESOURCE(IDI_ICON4),
													RT_GROUP_ICON);
	Msicon= (HICON)::LoadImage(hInstResource/*AfxGetApp()->m_hInstance*/, MAKEINTRESOURCE(IDI_ICON4), IMAGE_ICON, 29, 29, 0);
    hInstResource = AfxFindResourceHandle(MAKEINTRESOURCE(IDI_ICON5),
													RT_GROUP_ICON);
	Meicon= (HICON)::LoadImage(hInstResource/*AfxGetApp()->m_hInstance*/, MAKEINTRESOURCE(IDI_ICON5), IMAGE_ICON, 29, 29, 0);
    hInstResource = AfxFindResourceHandle(MAKEINTRESOURCE(IDI_ICON6),
													RT_GROUP_ICON);
	Tlicon= (HICON)::LoadImage(hInstResource/*AfxGetApp()->m_hInstance*/, MAKEINTRESOURCE(IDI_ICON6), IMAGE_ICON, 29, 29, 0);
     hInstResource = AfxFindResourceHandle(MAKEINTRESOURCE(IDI_ICON7),
												RT_GROUP_ICON);
	Tiicon= (HICON)::LoadImage(hInstResource/*AfxGetApp()->m_hInstance*/, MAKEINTRESOURCE(IDI_ICON7), IMAGE_ICON, 29, 29, 0);
	  hInstResource = AfxFindResourceHandle(MAKEINTRESOURCE(IDI_ICON8),
													RT_GROUP_ICON);
	Clicon= (HICON)::LoadImage(hInstResource/*AfxGetApp()->m_hInstance*/, MAKEINTRESOURCE(IDI_ICON8), IMAGE_ICON, 29, 29, 0);
    hInstResource = AfxFindResourceHandle(MAKEINTRESOURCE(IDI_ICON9),
													RT_GROUP_ICON);
	Cticon= (HICON)::LoadImage(hInstResource/*AfxGetApp()->m_hInstance*/, MAKEINTRESOURCE(IDI_ICON9), IMAGE_ICON, 29, 29, 0);
 hInstResource = AfxFindResourceHandle(MAKEINTRESOURCE(IDI_ICON10),
													RT_GROUP_ICON);
	Dbicon= (HICON)::LoadImage(hInstResource/*AfxGetApp()->m_hInstance*/, MAKEINTRESOURCE(IDI_ICON10), IMAGE_ICON, 29, 29, 0);
	hInstResource = AfxFindResourceHandle(MAKEINTRESOURCE(IDI_ICON11),
													RT_GROUP_ICON);
	Dlicon= (HICON)::LoadImage(hInstResource/*AfxGetApp()->m_hInstance*/, MAKEINTRESOURCE(IDI_ICON11), IMAGE_ICON, 29, 29, 0);
}

⌨️ 快捷键说明

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