【发布时间】:2010-03-05 11:56:41
【问题描述】:
我是 Mac 用户和 Windows 用户(曾经我曾经是 Amiga 用户)。我更喜欢 Mac(和 Amiga)采用(/took)的屏幕顶部菜单栏方法,我想为 Windows 编写一些可以提供此功能(并且可以工作)的东西与现有的应用程序)。
我知道这有点雄心勃勃,尤其是因为它只是一个从头开始的项目类型,而且由于家庭不断壮大,我的空闲时间几乎为零。几年前我研究了一下,得出的结论是这非常困难,但那是在 StackOverflow 之前;)
我认为我需要做这样的事情才能达到预期的结果:
创建将成为位于所有其他窗口顶部的自定义菜单栏的应用程序。自定义菜单必须提供所有功能来替换标准 Win32 窗口内菜单。没关系,它只是一个行为类似于菜单栏的应用程序。
它将不断枚举窗口以查找正在创建/销毁的窗口。它将枚举子窗口集合以查找菜单栏。
它将构建一个菜单来表示窗口中的菜单选项。
它将隐藏窗口中的菜单栏并将所有直接子窗口向上移动相应的像素量。它也会缩短窗口高度。
它将捕获应用程序发送到其菜单的所有消息,以相应地调整自定义菜单。
它会不断地轮询当前活动的窗口,因此它可以在必要时切换菜单。
当点击菜单时,它会使用真正的菜单子控件的 hwnd 向窗口发布消息。
就是这样!容易吧?不,可能不会。
我非常感谢 Win32 专家提供的关于从哪里开始、想法、陷阱以及关于是否可能的想法的任何建议。我白天不是 Win32 C++ 程序员,但我已经做了一些工作,我不介意通过 MSDN 平台 SDK 文档挖掘我的方式......
(我还有另一个想法,在多显示器设置中为每个屏幕创建一个任务栏并显示桌面的活动窗口——但我认为我可以在托管代码中做到这一点,并为自己节省大量工作)。
【问题讨论】:
-
还有很多其他可行的事情,为什么您要尝试并浪费时间尝试这样做,由于 MDI 应用程序的设计方式,这几乎是不可能的。 Windows 就是不支持这种东西。
标签: windows user-interface winapi desktop