首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >是否可以在MFC MDI应用程序中更改主顶级菜单的位置?

是否可以在MFC MDI应用程序中更改主顶级菜单的位置?
EN

Stack Overflow用户
提问于 2010-09-14 03:59:59
回答 2查看 373关注 0票数 0

我有一个应用程序与自定义框架(即,标题/标题栏,边框)。我删除了WS_CAPTION样式,覆盖了OnNcCalcSize,为标题保留了一个自定义大小的区域,这是应用程序在OnNcPaint中绘制的。

一个副作用是菜单栏不再显示,这是正常的,因为我想自定义主菜单的外观和位置。不幸的是,我不知道该怎么做。我希望“文件”菜单比标准菜单栏离左边缘更远。

一种可接受的替代方案是完全删除菜单,并使用OnNcHitTest、OnNcPaint和OnNcMouseMove来管理顶级菜单的手动编码替换。

EN

回答 2

Stack Overflow用户

发布于 2010-09-14 05:04:33

我从来没有看到过一种修改标准菜单外观的方法。您可以删除它(从InitInstance中删除创建代码),然后编写一个替换代码。不过,我不会在OnNcXXX中这样做,而是在顶部创建一个新的自定义控件。或者,您可以查看MFC Next主题菜单并编写自定义UI渲染器。这可能足以覆盖几个功能左和骑设置菜单的对齐。

票数 0
EN

Stack Overflow用户

发布于 2010-09-15 22:35:06

这是一个MFC MDI应用程序--菜单不是在InitInstance中创建的。我尝试过摆脱菜单(暂时成功了),但MFC框架似乎“把它放回去了”--我认为MDI模型使子窗口修改了菜单,但这样做的代码似乎被埋在框架中的某个地方(或者我只是无法找到它在应用程序代码中的确切位置,但我怀疑它是在MFC框架代码中发生的)。如果我知道在哪里,我也许能够重写这些方法并控制……我认为。

与处理OnNcMouseMove和OnNcLeftButtonDown相比,编写自定义控件的原因是什么,例如?我不期望在任何其他应用程序中需要该功能(新的应用程序可能是用C#编写的),所以我希望实现更容易,而不是代码重用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3703934

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档