Windows 更改窗口菜单';s位置

Windows 更改窗口菜单';s位置,windows,winapi,Windows,Winapi,在Windows中,打开菜单时,其在屏幕上的位置取决于其父窗口的位置和屏幕分辨率。即当菜单与屏幕不匹配时,它会移动到另一侧。 这种机制在操作系统中是如何工作的?是否有可能替换屏幕分辨率的值,这样窗口会考虑屏幕比实际的小? 我想让下拉菜单和上下文菜单只出现在窗口区域。现在,我使用CBThook和WndProc并重新计算出现的菜单的位置。也许有一种方法可以使它更简单?确实允许您在屏幕上指定一个矩形,使菜单不应重叠,我想这与您想要的正好相反,但它与您将要得到的最接近,而不会有可怕的攻击。问得好。这是您

在Windows中,打开菜单时,其在屏幕上的位置取决于其父窗口的位置和屏幕分辨率。即当菜单与屏幕不匹配时,它会移动到另一侧。 这种机制在操作系统中是如何工作的?是否有可能替换屏幕分辨率的值,这样窗口会考虑屏幕比实际的小?


我想让下拉菜单和上下文菜单只出现在窗口区域。现在,我使用CBThook和WndProc并重新计算出现的菜单的位置。也许有一种方法可以使它更简单?

确实允许您在屏幕上指定一个矩形,使菜单不应重叠,我想这与您想要的正好相反,但它与您将要得到的最接近,而不会有可怕的攻击。

问得好。这是您的第一个+1;)为什么人们想干预这个平台?本机菜单有什么问题?一旦找到全局钩子,就很难避免弄乱任何东西。还有各种
ALIGN
标志,因此您可以计算出菜单的大小(使用
GetMenuItemRect
),然后手动将其边缘定位,使其保持在窗口内。我想这可能行得通。