我有一个应用程序与自定义框架(即,标题/标题栏,边框)。我删除了WS_CAPTION样式,覆盖了OnNcCalcSize,为标题保留了一个自定义大小的区域,这是应用程序在OnNcPaint中绘制的。
一个副作用是菜单栏不再显示,这是正常的,因为我想自定义主菜单的外观和位置。不幸的是,我不知道该怎么做。我希望“文件”菜单比标准菜单栏离左边缘更远。
一种可接受的替代方案是完全删除菜单,并使用OnNcHitTest、OnNcPaint和OnNcMouseMove来管理顶级菜单的手动编码替换。
发布于 2010-09-14 05:04:33
我从来没有看到过一种修改标准菜单外观的方法。您可以删除它(从InitInstance中删除创建代码),然后编写一个替换代码。不过,我不会在OnNcXXX中这样做,而是在顶部创建一个新的自定义控件。或者,您可以查看MFC Next主题菜单并编写自定义UI渲染器。这可能足以覆盖几个功能左和骑设置菜单的对齐。
发布于 2010-09-15 22:35:06
这是一个MFC MDI应用程序--菜单不是在InitInstance中创建的。我尝试过摆脱菜单(暂时成功了),但MFC框架似乎“把它放回去了”--我认为MDI模型使子窗口修改了菜单,但这样做的代码似乎被埋在框架中的某个地方(或者我只是无法找到它在应用程序代码中的确切位置,但我怀疑它是在MFC框架代码中发生的)。如果我知道在哪里,我也许能够重写这些方法并控制……我认为。
与处理OnNcMouseMove和OnNcLeftButtonDown相比,编写自定义控件的原因是什么,例如?我不期望在任何其他应用程序中需要该功能(新的应用程序可能是用C#编写的),所以我希望实现更容易,而不是代码重用。
https://stackoverflow.com/questions/3703934
复制相似问题