如果Win32应用程序使用sigc和glibmm设计其UI, 它如何实现其消息循环? 它仍然使用win32 API,如GetMessage,DispatchMessage,TranslateMessage等? 或他们使用其他功能来完成此? 而默认的WinProc还在吗?使用sigc和glib的win32应用程序如何实现消息循环
2
A
回答
2
所有的Windows GUI应用程序都必须运行基于GetMessage
,TranslateMessage
,DispatchMessage
的消息泵。框架通常会使您免于实现细节,但框架中的某处将成为消息泵。
窗口过程也是如此。虽然你可能永远不必写一个或与其中一个进行交互,但框架必须为顶层窗口提供窗口过程,并且可能为子窗口提供窗口过程,这取决于框架的实现方式。
3
sigc + glibmm是位于本地回调/主循环(NSRunLoop for MacOSX和Windows上的GetMessage)顶部的GTK C框架回调/主循环上的C++级别。
GetMessage必须由Windows上的每个GUI应用程序调用以获得像窗口句柄,按键和鼠标移动这样的绝对基础知识。
TranslateMessage不是必需的,因为加速键是用GTK自己的实现来处理的。
SendMessage非常少见,大多数需要SendMessage的调用都是调用客户端控件,如按钮或文本字段控件。在GTK中,它们被实现为GtkButton和GtkEntry,并且GTK可以直接使用C实现而不需要通过Windows消息分派。
相关问题
- 1. 消息循环如何使用线程?
- 2. LIFO Win32消息循环?
- 3. MFC消息泵vs Win32消息循环
- 4. win32应用程序是否有一个消息循环?或者它是每个窗口一个消息循环?
- 5. 多线程Win32 GUI消息循环
- 6. 实现Win32消息循环并使用P/Invoke创建Window对象
- 7. 如何结合循环或如何实现许多循环到glib主循环?
- 8. Win32消息程序
- 9. 如何将消息从Win32应用程序发送到Java SWT应用程序?
- 10. WPF应用程序消息循环和PostThreadMessage
- 11. Win32 GUI应用程序:如何将stderr消息导入到消息箱中
- 12. win32无窗口应用程序使用定时器使用消息循环,而不使用CPU消耗while循环
- 13. 键盘输入&Win32消息循环
- 14. 如何使用Foreground应用程序实现Firebase云消息传递?
- 15. 获取外部应用程序的消息循环
- 16. 如何实现应用程序使用情况统计信息
- 17. C++ Win32 - 如何使用mciSendString()循环MIDI?
- 18. 如何实现使用for循环?
- 19. 在Windows窗体应用程序中挂钩消息循环?
- 20. wpf方法启动应用程序消息循环
- 21. 如何在Web应用程序中实现线程消息,如Facebook
- 22. Win32消息循环,不同线程中的OpenGL上下文
- 23. 实时消息应用程序
- 24. 如何保证单个GLib应用程序实例?
- 25. win32消息循环 - 我应该打破还是返回?
- 26. 的ShowWindow和消息循环
- 27. 如何将应用程序发送至应用程序消息
- 28. 使用C++处理控制台应用程序/ DLL中的消息Win32
- 29. 如何退出Windows Phone 7.8应用程序中的循环和应用程序?
- 30. 如何处理“循环应用程序”?
“如”GetMessage“是正确的。 “PeekMessage”是一个可行的选择。 –