下面是效果图
这是字符输出代码:
::DrawText(pDIS->hDC, pMenuItem->szMenuText, -1, \
rcText, DT_SINGLELINE|DT_LEFT|DT_VCENTER|DT_EXPANDTABS);已经试过很多方法了,但快捷键就是不往右靠,有什么办法解决呢?
PS:老规矩,开帖20分意思意思,有答案时另+100分,谢谢!

解决方案 »

  1.   

    下面是处理菜单高度及宽度的代码:
    // 处理菜单高度及宽度
    void CMenuBarCtrl::MeasureItem(HWND hWnd, MEASUREITEMSTRUCT *pMIS)
    {
    POPMENUITEM *pMenuItem = (POPMENUITEM *)pMIS->itemData; if(pMenuItem->uID == 0) // 分隔条
    {
    pMIS->itemHeight = 6;
    } else { // 菜单内容
    // 获得工具栏上下文句柄,用作检测文字尺寸
    CDC *pdc = GetDC();
    CString strText(pMenuItem->szMenuText);
    // 获取菜单文字尺寸
    CSize size = pdc->GetTextExtent(pMenuItem->szMenuText, \
    ::lstrlen(pMenuItem->szMenuText) + 1);
    // 设置菜单宽度为文字宽度
    pMIS->itemWidth = size.cx;
    // 菜单宽度加上图标宽度
    pMIS->itemWidth += 16;
    // 如果是弹出菜单,则需加上小箭头的宽度
    if(pMenuItem->uID == -1)
    pMIS->itemWidth += 15;
    // 设置菜单文字高度
    pMIS->itemHeight = ::GetSystemMetrics(SM_CYMENU);
    // 释放工具栏上下文句柄
    ReleaseDC(pdc);
    }
    }
      

  2.   

    MeasureItem干什么用的? 自己去看看msdn
      

  3.   

    http://download.csdn.net/source/777899
      

  4.   


    昏,需要资源分10分~
    点下载,发现是个文档,而用Toolbar制作菜单的问题我早解决了
    我现在的问题是怎么画菜单哟.............点取消下载后,刷新一下,发现已经扣了10分了,心想,反正分已经扣了,就下载吧~
    谁知道下载后又扣10分.......................................疯了!
      

  5.   

    首先菜单文字与快捷键字符串之间必须有\t字符,然后自绘时做如下处理:        LPSTR lpc = txt;//txt为菜单项文字,下面的lprc为菜单项矩形
    int n = 0;
    while(*lpc != '\t' && *lpc != '\0')
    lpc ++;
    if(*lpc == '\t')
    {
    *lpc = '\0';
    n = lpc - txt;
    } if(n > 0)
    {
    ::DrawText(hDC,txt,-1,lprc,DT_LEFT|DT_VCENTER|DT_SINGLELINE);
    *lpc = '\t';
    while(*lpc == '\t')
    lpc ++;
    if(*lpc != '\0')
    ::DrawText(hDC,lpc,-1,lprc,DT_RIGHT|DT_VCENTER|DT_SINGLELINE);
    }
    else
    ::DrawText(hDC,txt,-1,lprc,DT_LEFT|DT_VCENTER|DT_SINGLELINE|DT_EXPANDTABS);   
      

  6.   

    其实我调试了很多次,发现有的地方的制表符可以扩展,但有的地方不行有一个菜单:
    Test1 \t Ctrl+x
    Test2 \t Ctrl+x
    Test3 → 子菜单
    Test4 \t Ctrl+x
    Test5 \t Ctrl+x
    上面的菜单中,Test1 和 Test2 的制表符可以展开到右边
    但是 Test3 下面的那些就不行了!所以我在想,是不是在计算菜单尺寸的时候,计算失误呢~