gpt4 book ai didi

c++ - 为什么 Python 而不是 Qt 需要 DLL 中的 GetMessage 消息抽取?

转载 作者:行者123 更新时间:2023-11-27 22:34:02 26 4
gpt4 key购买 nike

我有一个使用 Windows API 的 C++ DLL,它处理 HWND_MESSAGE 窗口创建/注册并通过 RegisterDeviceNotification 注册事件通知。在 Qt 中,我只是设置了一个窗口,没有使用 GetMessage,但是我的窗口进程回调自动工作,所以我没有使用 GetMessage 循环来接收通知WM_DEVICECHANGE。我在不添加任何额外代码的情况下获得设备到达和移除。

但是,在 Python 中,我只是使用 ctypes 将 DLL 作为 cdll 加载,这是可行的:

__lib = ctypes.cdll.LoadLibrary("DevSystem.dll")

但是,我需要在我的 C++ DLL 中手动使用事件 GetMessage 循环来获取设备到达/移除通知。我必须手动创建一个循环才能工作,我不明白。

基本上,这些行是 Python 需要工作的唯一区别:

    MSG msg;
while (GetMessage(&msg, hWnd, WM_DEVICECHANGE, WM_DEVICECHANGE))
{
DispatchMessage(&msg);
}
  1. 为什么它在 Qt 中默认工作?
  2. 为什么 Python 需要消息循环获取通知?

最佳答案

Why does it work by default in Qt?

Qt 应用程序框架运行一个消息循环来为 UI 提供服务,该消息循环还为您的回调提供服务。

Why does Python need a message loop to get notification?

您的 Python 程序不包含运行消息循环的任何内容,因此您需要明确地实现它。

关于c++ - 为什么 Python 而不是 Qt 需要 DLL 中的 GetMessage 消息抽取?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57153460/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com