📄 cmmenu.cpp
字号:
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 + -