hab momentan ein verwirrendes Problem und weiß nicht ob ich es einfach ignorieren kann.
Ich kriege bei meinem aktuellen Windows-Projekt (Screensaver) nur im Debug-Modus immer die folgende Fehlermeldung:
Code: Alles auswählen
Debug Error!
...
Module: 4.8.0
File: global\qglobal.cpp
Line: 2232
ASSERT: "w->testAttribute(Qt::WA_WState_Created)" in file
inputmethod\qwininputcontext_win.cpp, line 377
(Press Retry to debug the application)
Im Release kommt der Fehler logischerweise gar nicht, da die ASSERTS entfernt werden, und das Programm läuft problemlos.
Ich hab im Internet nur das hier gefunden, wo sie darauf schlissen das es einfach ein BUG in Qt ist.
Und zu guter letzt ein wenig Code wo der Fehler auftritt, zu beachten ist das kein QApplication::exec aufgerufen wird, da die Events von einem anderen Bibliothek abgearbeitet werden (scrnsave.lib).
Vielleicht liegt auch da schon das Problem.
Code: Alles auswählen
...
BOOL WINAPI RegisterDialogClasses(HANDLE hInst)
{
...
(new QApplication(argc, argv))->setAttribute(Qt::AA_NativeWindows ,true);
...
return TRUE;
}
BOOL WINAPI ScreenSaverConfigureDialog(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
switch(message)
{
case WM_INITDIALOG:
{
QScreenSaverConfigWidget *config = createCustomScreenSaverConfig();
...
SetParent(config->winId(), hDlg);
DWORD style = GetWindowLong(config->winId(), GWL_STYLE);
style = style & ~(WS_POPUP) | WS_CHILD;
SetWindowLong(config->winId(), GWL_STYLE, style);
config->show(); // <- hier Tritt der Fehler auf
}
return TRUE;
...
case WM_DESTROY:
delete QScreenSaverConfigWidget::instance();
delete QApplication::instance();
return TRUE;
}
return FALSE;
}
Mfg veeman