void WindowsApp::OnAppOptions() { QWinWidget *win = new QWinWidget(theApp.m_pMainWnd); win->showCentered(); QDialog *dialog = new QDialog(win); Ui::OptionsDialog ui; ui.setupUi(dialog); dialog->setAttribute(Qt::WA_DeleteOnClose); dialog->show(); }
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { switch (message) { case WM_LBUTTONUP: { QWinWidget w(hWnd, 0, 0); w.showCentered(); QMessageBox mb("Qt on Win32 - modal", "Is this dialog modal?", QMessageBox::NoIcon, QMessageBox::Yes | QMessageBox::Default, QMessageBox::No | QMessageBox::Escape, QMessageBox::NoButton, &w); int result = mb.exec(); Q_UNUSED(result); } break; case WM_RBUTTONUP: { QWinWidget *w = new QWinWidget(hWnd, 0, 0); w->showCentered(); QMessageBox *mb = new QMessageBox("Qt on Win32 - modeless", "Is this dialog modal?", QMessageBox::NoIcon, QMessageBox::Yes | QMessageBox::Default, QMessageBox::No | QMessageBox::Escape, QMessageBox::NoButton, w); mb->setModal(false); mb->setAttribute(Qt::WA_DeleteOnClose); mb->show(); } break; case WM_KEYDOWN: if (wParam != VK_TAB) return DefWindowProc(hWnd, message, wParam, lParam); SetFocus(winId); break; case WM_SETFOCUS: { QString str("Got focus"); QWidget *widget = QWidget::find(HWND(wParam)); if (widget) str += QString(" from %1 (%2)").arg(widget->objectName()).arg(widget->metaObject()->className()); str += "\n"; OutputDebugStringA(str.toLocal8Bit().data()); } break; case WM_KILLFOCUS: { QString str("Lost focus"); QWidget *widget = QWidget::find(HWND(wParam)); if (widget) str += QString(" to %1 (%2)").arg(widget->objectName()).arg(widget->metaObject()->className()); str += "\n"; OutputDebugStringA(str.toLocal8Bit().data()); } break; case WM_DESTROY: PostQuitMessage(0); break; default: return DefWindowProc(hWnd, message, wParam, lParam); } return 0; }