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

📄 csdn_文档中心_vc++的菜单控制和自绘菜单。.htm

📁 csdn10年中间经典帖子
💻 HTM
📖 第 1 页 / 共 3 页
字号:
            CDC::FromHandle(lpDIS-&gt;hDC);<BR>&nbsp;&nbsp;&nbsp;&nbsp;CRect 
            rect;<BR>&nbsp;&nbsp;&nbsp;&nbsp;HICON 
            hIcon;<BR>&nbsp;&nbsp;&nbsp;&nbsp;COLORREF crText = 
            m_crText;<BR>&nbsp;&nbsp;&nbsp;&nbsp;// draw the colored rectangle 
            portion<BR>&nbsp;&nbsp;&nbsp;&nbsp;rect.CopyRect(&amp;lpDIS-&gt;rcItem);<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;// 
            draw the up/down/focused/disabled 
            state<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;UINT action = 
            lpDIS-&gt;itemAction;<BR>&nbsp;&nbsp;&nbsp;&nbsp;UINT state = 
            lpDIS-&gt;itemState;<BR>&nbsp;&nbsp;&nbsp;&nbsp;CString 
            strText;<BR>&nbsp;&nbsp;&nbsp;&nbsp;LOGFONT 
            lf;<BR>&nbsp;&nbsp;&nbsp;&nbsp;lf = 
            m_lf;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;CFont 
            dispFont;<BR>&nbsp;&nbsp;&nbsp;&nbsp;CFont 
            *pFont;<BR>&nbsp;&nbsp;&nbsp;&nbsp;//GetWindowText(strText);<BR>&nbsp;&nbsp;&nbsp;&nbsp;if 
            (lpDIS-&gt;itemData != 
            NULL)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;strText 
            = (((MENUDATA*) 
            (lpDIS-&gt;itemData))-&gt;menuText);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if 
            ((((MENUDATA *)(lpDIS-&gt;itemData))-&gt;menuIconNormal) == 
            -1)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hIcon 
            = NULL;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else if 
            (state &amp; 
            ODS_SELECTED)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if 
            ((((MENUDATA *)(lpDIS-&gt;itemData))-&gt;menuIconSelected) != 
            -1)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hIcon 
            = AfxGetApp ()-&gt;LoadIcon (((MENUDATA 
            *)(lpDIS-&gt;itemData))-&gt;menuIconSelected);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hIcon 
            = AfxGetApp()-&gt;LoadIcon 
            (((MENUDATA*)(lpDIS-&gt;itemData))-&gt;menuIconNormal);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hIcon 
            = AfxGetApp()-&gt;LoadIcon 
            (((MENUDATA*)(lpDIS-&gt;itemData))-&gt;menuIconNormal);<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TRACE1 
            ("Draw for %s\n", 
            strText);<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;else<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;strText.Empty();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hIcon 
            = 
            NULL;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;if 
            ( (state &amp; ODS_SELECTED) 
            )<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// 
            draw the down 
            edges<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CPen 
            *pOldPen = pDC-&gt;SelectObject 
            (&amp;m_penBack);<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//You 
            need only Text highlight and thats what you 
            get<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if 
            (m_hilightStyle != 
            Normal)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pDC-&gt;FillRect 
            (rect,&amp;m_brBackground);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pDC-&gt;FillRect 
            (rect,&amp;m_brSelect);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pDC-&gt;SelectObject 
            (pOldPen);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pDC-&gt;Draw3dRect 
            (rect,GetSysColor 
            (COLOR_3DHILIGHT),GetSysColor(COLOR_3DSHADOW));<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lf.lfWeight 
            = FW_BOLD;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if 
            ((HFONT)dispFont != 
            NULL)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dispFont.DeleteObject 
            ();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dispFont.CreateFontIndirect 
            (&amp;lf);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;crText 
            = 
            m_clrHilightText;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//While 
            selected move the text a 
            bit<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TRACE0 
            ("SELECT,SELECTED\n");<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;else<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CPen 
            *pOldPen = pDC-&gt;SelectObject 
            (&amp;m_penBack);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pDC-&gt;FillRect 
            (rect,&amp;m_brBackground);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pDC-&gt;SelectObject 
            (pOldPen);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// 
            draw the up 
            edges<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pDC-&gt;Draw3dRect 
            (rect,m_clrBack,m_clrBack);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if 
            ((HFONT)dispFont != 
            NULL)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dispFont.DeleteObject 
            ();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dispFont.CreateFontIndirect 
            (&amp;lf); 
            //Normal<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TRACE0 
            ("SELECT, 
            NORMAL\n");<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;// 
            draw the text if there is any<BR>&nbsp;&nbsp;&nbsp;&nbsp;//We have 
            to paint the text only if the image is 
            nonexistant<BR>&nbsp;&nbsp;&nbsp;&nbsp;if (hIcon != 
            NULL)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(DrawIconEx 
            (pDC-&gt;GetSafeHdc(),rect.left,rect.top,hIcon,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(m_iconX)?m_iconX:32,(m_iconY)?m_iconY:32,0,NULL,DI_NORMAL))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TRACE0("Wrote 
            the icon 
            successfully\n");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TRACE0 
            ("SORRY.NOGO\n");<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;//This 
            is needed always so that we can have the space for check 
            marks<BR>&nbsp;&nbsp;&nbsp;&nbsp;rect.left = rect.left 
            +((m_iconX)?m_iconX:32);<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;if ( 
            !strText.IsEmpty())<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// 
            pFont-&gt;GetLogFont 
            (&amp;lf);<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int 
            iOldMode = 
            pDC-&gt;GetBkMode();<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pDC-&gt;SetBkMode( 
            TRANSPARENT);<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pDC-&gt;SetTextColor( 
            crText);<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pFont 
            = pDC-&gt;SelectObject 
            (&amp;dispFont);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TRACE1( 
            "About To DrawText 
            %s\n",strText);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pDC-&gt;DrawText 
            (strText,rect,DT_LEFT|DT_SINGLELINE|DT_VCENTER);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TRACE0("Done\n");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pDC-&gt;SetBkMode( 
            iOldMode 
            );<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pDC-&gt;SelectObject 
            (pFont); //set it to the old 
            font<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;dispFont.DeleteObject 
            ();<BR>}<BR><BR>void CCustomMenu::MeasureItem( LPMEASUREITEMSTRUCT 
            lpMIS )<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;CDC *pDC = 
            AfxGetApp()-&gt;m_pMainWnd-&gt;GetDC();<BR>&nbsp;&nbsp;&nbsp;&nbsp;CFont* 
            pFont = pDC-&gt;SelectObject 
            (&amp;m_fontMenu);<BR>&nbsp;&nbsp;&nbsp;&nbsp;int iconX = 0,iconY= 
            0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;TEXTMETRIC 
            tm;<BR>&nbsp;&nbsp;&nbsp;&nbsp;pDC-&gt;GetTextMetrics 
            (&amp;tm);<BR>&nbsp;&nbsp;&nbsp;&nbsp;pDC-&gt;SelectObject 
            (pFont);<BR>&nbsp;&nbsp;&nbsp;&nbsp;AfxGetApp()-&gt;m_pMainWnd-&gt;ReleaseDC 
            (pDC);<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;if 
            (m_iconX)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;iconX = 
            m_iconX;<BR>&nbsp;&nbsp;&nbsp;&nbsp;if 
            (m_iconY)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;iconY = 
            m_iconY;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;lpMIS-&gt;itemWidth = iconX 
            + tm.tmAveCharWidth * 
            lstrlen(((MENUDATA*)(lpMIS-&gt;itemData))-&gt;menuText) 
            +10;<BR>&nbsp;&nbsp;&nbsp;&nbsp;lpMIS-&gt;itemHeight = (iconY &gt; 
            (m_iMenuHeight+1))?iconY:m_iMenuHeight + 1;<BR>}<BR><BR>void 
            CCustomMenu::SetIconSize (int width, int 
            height)<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;m_iconX = 
            width;<BR>&nbsp;&nbsp;&nbsp;&nbsp;m_iconY = height;<BR>}<BR><BR>void 
            CCustomMenu::SetTextColor (COLORREF 
            clrText)<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;m_crText = 
            clrText;<BR>}<BR><BR>void CCustomMenu::SetBackColor (COLORREF 
            clrBack)<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;m_clrBack = 
            clrBack;<BR>&nbsp;&nbsp;&nbsp;&nbsp;if ((HBRUSH)m_brBackground != 
            NULL)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_brBackground.DeleteObject 
            ();<BR>&nbsp;&nbsp;&nbsp;&nbsp;m_brBackground.CreateSolidBrush 
            (clrBack);<BR>}<BR><BR>void CCustomMenu::SetHighlightColor (COLORREF 
            clrHilight)<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;m_clrHilight = 
            clrHilight;<BR>&nbsp;&nbsp;&nbsp;&nbsp;if ((HBRUSH)m_brSelect != 
            NULL)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_brSelect.DeleteObject 
            ();<BR>&nbsp;&nbsp;&nbsp;&nbsp;m_brSelect.CreateSolidBrush 
            (clrHilight);<BR>}<BR><BR>void CCustomMenu::SetHighlightTextColor 
            (COLORREF 
            clrHilightText)<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;m_clrHilightText = 
            clrHilightText;<BR>}<BR><BR><BR>void CCustomMenu::SetHighlightStyle 
            (HIGHLIGHTSTYLE 
            hilightStyle)<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;m_hilightStyle = 
            hilightStyle;<BR>}<BR><BR></FONT><BR></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE><BR>
<TABLE align=center bgColor=#006699 border=0 cellPadding=0 cellSpacing=0 
width=770>
  <TBODY>
  <TR bgColor=#006699>
    <TD align=middle bgColor=#006699 id=white><FONT 
    color=#ffffff>对该文的评论</FONT></TD>
    <TD align=middle>
      <SCRIPT src="CSDN_文档中心_VC++的菜单控制和自绘菜单。.files/readnum.htm"></SCRIPT>
    </TD></TR></TBODY></TABLE><BR>
<DIV align=center>
<TABLE align=center bgColor=#cccccc border=0 cellPadding=2 cellSpacing=1 
width=770>
  <TBODY>
  <TR>
    <TH bgColor=#006699 id=white><FONT 
color=#ffffff>我要评论</FONT></TH></TR></TBODY></TABLE></DIV>
<DIV align=center>
<TABLE border=0 width=770>
  <TBODY>
  <TR>
    <TD>你没有登陆,无法发表评论。 请先<A 
      href="http://www.csdn.net/member/login.asp?from=/Develop/read_article.asp?id=2239">登陆</A> 
      <A 
href="http://www.csdn.net/expert/zc.asp">我要注册</A><BR></TD></TR></TBODY></TABLE></DIV><BR>
<HR noShade SIZE=1 width=770>

<TABLE border=0 cellPadding=0 cellSpacing=0 width=500>
  <TBODY>
  <TR align=middle>
    <TD height=10 vAlign=bottom><A 
      href="http://www.csdn.net/intro/intro.asp?id=2">网站简介</A> - <A 
      href="http://www.csdn.net/intro/intro.asp?id=5">广告服务</A> - <A 
      href="http://www.csdn.net/map/map.shtm">网站地图</A> - <A 
      href="http://www.csdn.net/help/help.asp">帮助信息</A> - <A 
      href="http://www.csdn.net/intro/intro.asp?id=2">联系方式</A> - <A 
      href="http://www.csdn.net/english">English</A> </TD>
    <TD align=middle rowSpan=3><A 
      href="http://www.hd315.gov.cn/beian/view.asp?bianhao=010202001032100010"><IMG 
      border=0 height=48 src="CSDN_文档中心_VC++的菜单控制和自绘菜单。.files/biaoshi.gif" 
      width=40></A></TD></TR>
  <TR align=middle>
    <TD vAlign=top>百联美达美公司 版权所有 京ICP证020026号</TD></TR>
  <TR align=middle>
    <TD vAlign=top><FONT face=Verdana>Copyright &copy; CSDN.net, Inc. All rights 
      reserved</FONT></TD></TR>
  <TR>
    <TD height=15></TD>
    <TD></TD></TR></TBODY></TABLE></DIV>
<DIV></DIV><!--内容结束//--><!--结束//--></BODY></HTML>

⌨️ 快捷键说明

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