winapi - 使用sigc和glib的win32应用程序如何实现消息循环

标签 winapi loops gtk message

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

最佳答案

sigc+glibmm 是 GTK C 框架回调/主循环之上的 C++ 级别,而 GTK C 框架回调/主循环又位于 native 回调/主循环之上(MacOSX 上为 NSRunLoop,Windows 上为 GetMessage)。

Windows 上的每个 GUI 应用程序都必须调用 GetMessage,以获得绝对的基础信息,例如窗口句柄、按键和鼠标移动。

不需要 TranslateMessage,因为加速键是通过 GTK 自己的实现来处理的。

SendMessage 使用很少,大多数需要 SendMessage 的调用都是对客户端控件(如按钮或文本字段小部件)的调用。在 GTK 中,它们被实现为 GtkButton 和 GtkEntry,并且 GTK 可以直接使用 C 实现,而无需经过 Windows 消息调度。

关于winapi - 使用sigc和glib的win32应用程序如何实现消息循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6841436/

相关文章:

java - for循环中的public void方法;无法接收循环变量

python - 如何优雅地遍历多个列表

java - 创建一个将读取 txt 文件的文件

c - GTK:定位上下文菜单项 w.r.t 上下文菜单

c++ - EXCEPTION_CONTINUE_EXECUTION 奇怪的行为

c - 是否有某种方法可以使 win32 GDI 调用以不同的方式解释坐标?

c - 如何兼顾 FILE_SKIP_COMPLETION_PORT_ON_SUCCESS、IOCP 和清理

用于 win32/Unix 的 C++ 可移植 NaN

c - GtkDrawingArea 与 Cairo - 如何使其可滚动

python - 根据文件的mimetype获取图标,Linux + Python