如何在MFC应用程序中调整应用程序菜单栏的大小?

时间:2017-09-15 09:17:34

标签: mfc custom-draw cmenu

我正在使用MFC,我已经创建了成功的自定义菜单。除mainlevel-items外,每个菜单项都被正确测量和绘制。我唯一无法完成的是重绘应用程序菜单栏。

我附上了两张图片:

  1. 第一个显示了菜单栏的一部分。 Consolas 11pt字体绘制正确。按钮的宽度计算正确,按钮需要分布在两行。
  2. 第二张图片显示了与Consolas 20pt字体相同的菜单栏。现在菜单需要三行来包含所有菜单项。但是,每个单独行的高度不会更新。 (在调试时,我看到MeasureItem覆盖计算每个菜单项的正确高度)。在菜单栏下方,有一个工具栏(BCGToolBar),可以计算其栏的正确高度。
  3. 无论字体大小如何,应用程序菜单栏都不会改变其高度?

    如何在此MFC应用程序中调整应用程序菜单栏的大小?

    Two lines of menu with normal fontsize Two lines of menu with big fontsize

    到目前为止我尝试过的事情是遵循不同顺序的代码行:

    int y = [1,2,3];
    int x = [3,2,1];
    
    
    for (i=0;i<=2;i++) {
        y[i] = x[i];
    }
    

1 个答案:

答案 0 :(得分:0)

第一部分不是直接问题的答案,但它应该澄清为什么没有必要。

菜单是全局UI的一部分。此外,菜单项的大小也是全局设置的一部分。

如果用户最近,他可以更改窗口设置以获得更大的菜单。

我不认为这是改变标准行为的好方法。 UI应该是稳定,持久和一致的。所有程序都应具有相同的外观和功能。这包括菜单栏。

现在回答你的问题。

您收到WM_MEASUREITEM消息。 Resond to itond,你可以改变onwerdraw菜单的高度。

请参阅:http://www.codeguru.com/cpp/controls/menu/article.php/c3719/The-Easiest-Way-to-Code-the-Owner-Drawn-Menu.htm