我用GetWindowDC应该可以获得菜单的DC
但是在哪个函数里Get呢?

解决方案 »

  1.   

    在菜单旁边写字我已经搞定了void CMainFrame::SetStrMenu(CString str)
    {
    CDC* pDC = GetWindowDC();
    pDC->TextOut(300,3,str);//这里的int x 没办法确定啊!!!!int y倒是好解决加上SM_CYCAPTION就成... ReleaseDC(pDC);
    }
    TextOut的第一个参数int x应该是菜单的最右边,我不知道怎样获取菜单的右边坐标
    哪位大侠指点?另外,我频繁的(一秒中一次)调用上面SetStrMenu函数反复的GetDC、ReleaseDC对程序、资源上有没有影响?有更好的解决办法么?(把DC存成全局变量可以么?)
      

  2.   

    获得整个区域的Rect,右边不跟菜单差不多???
      

  3.   

    CDC::GetOutputTextExtent 得到你想要输出的字符串的长度调用::GetWindowRect()得到窗口的宽度 然后窗口的宽度减去你字符串的长度就是x了
      

  4.   

    void CMainFrame::SetStrMenu(CString str)
    {
        CDC* pDC = GetWindowDC();
        RECT menurc;
        GetMenuItemRect(m_hWnd,::GetMenu(m_hWnd),5,&menurc);//当然,你要明确MENU的第5项的长度,这个肉眼看个差不多就可以
        menurc.left=menurc.right;
        menurc.right=740;
        pDC->TextOut(menurc.left,3,str);//因为我的窗口连CAPTION都没有,所以int y就是3了
        ReleaseDC(pDC);
    }
    大致就是这样,可能具体还需要修改,谢谢诸位!