如何制作一个在使用时不会暂停我的程序的菜单?

Posted

技术标签:

【中文标题】如何制作一个在使用时不会暂停我的程序的菜单?【英文标题】:How to make a menu that doesnt pause my program when used? 【发布时间】:2011-05-21 13:27:08 【问题描述】:

这是我为程序创建菜单的代码:

WNDCLASS wc;
...
hInstance = GetModuleHandle(NULL);
wc.style = CS_HREDRAW | CS_VREDRAW | CS_OWNDC;
wc.lpfnWndProc = (WNDPROC) WndProc;
wc.hInstance = hInstance;
...
if(!RegisterClass(&wc)) ...

现在,如果我打开菜单,我的程序将暂停,直到我不再使用菜单,我如何制作它以便即使我使用菜单,我的窗口也会继续呈现?如果这很重要,我正在使用 OpenGL 窗口。

请注意,菜单应该像使用此代码一样呈现(因此它不会在我的 opengl 呈现区域上呈现菜单,而是为其自己的区域占用空间。

【问题讨论】:

【参考方案1】:

您需要在单独的线程中进行渲染 - 弹出菜单将始终停止单线程 Windows 应用程序。

【讨论】:

so.. 那你有解决这个问题的答案吗?我如何把它变成一个线程等 @Rookie 那需要一本书。或者两个,或者三个。 @Rookie 答案是在与 UI 不同的线程中运行渲染。 & @david,有没有winapi解决方案,比如使用 CreateWindow 之类的?我已经使用的状态栏有点创建新线程,它独立于我的程序运行(我认为,因为它可以在那里显示我的菜单选择提示)。 @Rookie 不,状态栏不在单独的线程中运行。如果不创建一个,就没有真正的方法可以做你想做的事。从理论上讲,您可以只使用 Windows 消息来解决问题,但这几乎不可能做到正确 - 线程实际上要容易得多。

以上是关于如何制作一个在使用时不会暂停我的程序的菜单?的主要内容,如果未能解决你的问题,请参考以下文章

如何访问 Siri Remote 播放/暂停按钮和覆盖菜单按钮

如何在 CSS 中制作具有变化高度的固定顶部菜单栏?

Spotify - 如何暂停曲目和恢复曲目

如何暂停我的 Java 程序 2 秒

Swift 3:通过覆盖 SKView 在 SpriteKit 中制作暂停菜单?

如何在基础活动暂停时暂停rxjava Observable.interval