Hello !
First I appologize for my english, I'm french.
I'm building a DLL who contains QWidgets. This DLL is launch by an external software (Flight Simulator X).
I have to SetParent() my Qt window to FSX, but the result is not good ...
I have spent several hours trying to solve this issue but I didn't ...
The problem is that my Qt window is not displaying correctly even not displaying, the style of the Qt window is deleted etc...
If I don't SetParent() my Qt window and FSX main window, my Qt window is displaying correctly.
HWND lFsxHandle=FindWindow(L"FS98MAIN", NULL);
HINSTANCE hInstance = (HINSTANCE)GetWindowLong(lFsxHandle, GWL_HINSTANCE);
SimConnect_SetSystemState(gSimConnect, "DialogMode", 1, 0, NULL);
qint32 argc = 1;
char *argv[] = {"SDManager"};
int result;
SDManagerFenetre lF;
SetParent(lF.winId(), lFsxHandle);
lF.show();
result = lA.exec();
SimConnect_SetSystemState(gSimConnect, "DialogMode", 0, 0, NULL);
HWND lFsxHandle=FindWindow(L"FS98MAIN", NULL);
HINSTANCE hInstance = (HINSTANCE)GetWindowLong(lFsxHandle, GWL_HINSTANCE);
SimConnect_SetSystemState(gSimConnect, "DialogMode", 1, 0, NULL);
qint32 argc = 1;
char *argv[] = {"SDManager"};
int result;
QApplication lA(argc, argv);
SDManagerFenetre lF;
SetParent(lF.winId(), lFsxHandle);
lF.show();
result = lA.exec();
SimConnect_SetSystemState(gSimConnect, "DialogMode", 0, 0, NULL);
To copy to clipboard, switch view to plain text mode
I click on my button who trigger the QtWidget.show() :
1_20121024-1220.jpg
When I just clik on the Windows Start Button my QtWidget appear :
2.jpg
I can find my QtWidget using my mouse to rezize etc .. :
3.jpg
I give you my creation code of my Qwidget :
cpp :
#include "StdAfx.h"
#include "SDManagerFenetre.h"
{
resize(512, 512);
setWindowTitle(tr("SkyDream Manager"));
}
SDManagerFenetre::~SDManagerFenetre()
{
}
void SDManagerFenetre
::showEvent(QShowEvent *event
) {
Q_UNUSED(event);
CenterOnScreen();
}
void SDManagerFenetre::CenterOnScreen()
{
QRect screenGeom
= screen.
screenGeometry(this);
int screenCenterX = screenGeom.center().x();
int screenCenterY = screenGeom.center().y();
move(screenCenterX - width () / 2,
screenCenterY - height() / 2);
}
#include "StdAfx.h"
#include "SDManagerFenetre.h"
SDManagerFenetre::SDManagerFenetre(QWidget *parent) : QWidget(parent)
{
resize(512, 512);
setWindowTitle(tr("SkyDream Manager"));
}
SDManagerFenetre::~SDManagerFenetre()
{
}
void SDManagerFenetre::showEvent(QShowEvent *event)
{
Q_UNUSED(event);
CenterOnScreen();
}
void SDManagerFenetre::CenterOnScreen()
{
QDesktopWidget screen;
QRect screenGeom = screen.screenGeometry(this);
int screenCenterX = screenGeom.center().x();
int screenCenterY = screenGeom.center().y();
move(screenCenterX - width () / 2,
screenCenterY - height() / 2);
}
To copy to clipboard, switch view to plain text mode
.h :
#pragma once
#include <QtGui>
class SDManagerFenetre
: public QWidget{
public:
SDManagerFenetre
(QWidget *parent
= 0);
~SDManagerFenetre(void);
protected:
private:
void CenterOnScreen();
};
#pragma once
#include <QtGui>
class SDManagerFenetre : public QWidget
{
public:
SDManagerFenetre(QWidget *parent = 0);
~SDManagerFenetre(void);
protected:
void showEvent(QShowEvent *event);
private:
void CenterOnScreen();
};
To copy to clipboard, switch view to plain text mode
Have u an idea ? Thank you in advance.
Bookmarks