2011-07-27 47 views
2

如果Win32应用程序使用sigc和glibmm设计其UI, 它如何实现其消息循环? 它仍然使用win32 API,如GetMessage,DispatchMessage,TranslateMessage等? 或他们使用其他功能来完成此? 而默认的WinProc还在吗?使用sigc和glib的win32应用程序如何实现消息循环

+0

“如”GetMessage“是正确的。 “PeekMessage”是一个可行的选择。 –

回答

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消息分派。

相关问题