在 Qt5 中,處理原生 Windows 訊息的函式是:
bool QWidget::nativeEvent(const QByteArray &eventType, void *message, long *result)
并且檔案說,第三個引數意味著LRESULT在 Windows 上。在 Qt6 中,引數更改為qintptr:
bool QWidget::nativeEvent(const QByteArray &eventType, void *message, qintptr *result)
LRESULT現在您可以使用 64-bit正確傳遞 64 -bit qintptr。但是在 Qt5 中在32 位的 Windows x64 上應該做什么呢?long
我有一個自定義MessageHandler,它使用它回傳各種 8 位元組指標,因此來自LRESULT的呼叫存盤了截斷的結果。*result = SendMessage(...)nativeEvent
uj5u.com熱心網友回復:
在 Windows x64 上應該做什么?”
不要使用Qt5。
好吧,您可以在大部分程式中使用 Qt5,但不能使用 Qt 來處理此特定訊息。您可以做的是將視窗子類化(請參閱 WinAPI 函式SetWindowSubclass)并撰寫您自己的視窗程序,它只處理該單個訊息,同時允許所有其余部分像往常一樣通過 Qt 視窗程序進行處理。
這是一個關于子類化的官方微軟教程:
- https://docs.microsoft.com/en-us/windows/win32/controls/subclassing-overview#subclassing-controls-using-comctl32dll-version-6
雖然它談到子類化子視窗(控制元件),但同樣的技術適用于頂級視窗。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/461764.html
下一篇:按日期獲取記錄是30天的倍數
