mit qwidgets ein spiel wrappen

Alles rund um die Programmierung mit Qt
qt fan
Beiträge: 53
Registriert: 28. Dezember 2007 21:41

mit qwidgets ein spiel wrappen

Beitrag von qt fan »

hallo,
bin noch nich lang bei qt, aber da mir mit qt alles so einfach erscheint, hab ich mich gefragt ob ich mit qwidget oder qmainwindow oder qdialog (die 3 kenne ich bislang) ein kleines dirctx spiel einfach im fenster laufen lassen kann.
mit mfc geht das wohl ueber das handle vom fenster, des spiels, oder so, aber mit mfc hatte ich bislang keine beruehrung.
wenn das mit qt irgendwie einfach machbar ist, waere ich ueber ein paar tips, welche qt module dazu noetig sind dankbar. es soll ebend die vollbildapplikation im fenster laufen, so dass man zb mit der cheatengine besser arbeiten kann.

mfg qt fan
qt fan
Beiträge: 53
Registriert: 28. Dezember 2007 21:41

Beitrag von qt fan »

waere es moeglich meinen thread in das "Qt Programmierung" forum zu verschieben?
CaptnChaos
Beiträge: 605
Registriert: 28. Juni 2007 15:01
Kontaktdaten:

Beitrag von CaptnChaos »

hm, warum directx?
es gibt doch auch opengl, das ist genauso einfach.
CaptnChaos
Beiträge: 605
Registriert: 28. Juni 2007 15:01
Kontaktdaten:

Beitrag von CaptnChaos »

Zuletzt geändert von CaptnChaos am 7. Januar 2008 12:03, insgesamt 1-mal geändert.
CaptnChaos
Beiträge: 605
Registriert: 28. Juni 2007 15:01
Kontaktdaten:

Beitrag von CaptnChaos »

Ich bin ja äußerst gutmütig. :)
Hier hast du fast die lösung. Musst das eingefangene Window nur noch Frameless machen und resizen. Per WinAPI.
Viel Glück.
Zuletzt geändert von CaptnChaos am 7. Januar 2008 12:03, insgesamt 1-mal geändert.
CaptnChaos
Beiträge: 605
Registriert: 28. Juni 2007 15:01
Kontaktdaten:

Beitrag von CaptnChaos »

Ok, hab das auch noch reingemacht.
War ja nicht so schwer.
Zuletzt geändert von CaptnChaos am 7. Januar 2008 12:03, insgesamt 1-mal geändert.
CaptnChaos
Beiträge: 605
Registriert: 28. Juni 2007 15:01
Kontaktdaten:

Beitrag von CaptnChaos »

hm.
Ich hab noch ein Problem gefunden. Wenn man das Neue Parent Widget schliesst, bleibt der Process aktiv und man kann ihn nur per TaskManager schliessen.
Hier noch ein Bugfix.
qt fan
Beiträge: 53
Registriert: 28. Dezember 2007 21:41

Beitrag von qt fan »

hallo, danke fuer deine antworten, dein programm stoesst leider auf den gleichen fehler wie meines, das ganze windows geht auf 640x480 und 256 farben runter und der inhalt des fensters bleibt schwarz.
ich hab ein wenig rumprobiert und das problem teilweise loesen koennen, leider bleibt in diesem fenster immernoch der inhalt schwarz.

Code: Alles auswählen

#include "qtnew.h"

#include <QtGui>
#include <QApplication>
#include <windows.h>
#include<iostream>
using namespace std;

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    HWND calc;
	HWND calc0;
	qtnew q;
	q.show();
	calc = FindWindow(NULL, L"Worms Armageddon");
	calc0 = FindWindow(NULL, L"qtnew");
	if( calc==0 ){
		cout<<GetLastError();
	}
	q.hide();
    SetParent(calc,calc0);
	q.show();
	return a.exec();
}
die hide() funktion ist irgendwie wichtig, also dass das q fenster nicht zu sehen ist, waerend calc0 calc adoptiert.

mfg qt fan
CaptnChaos
Beiträge: 605
Registriert: 28. Juni 2007 15:01
Kontaktdaten:

Beitrag von CaptnChaos »

hm
bei mir hats einwandfrei funktioniert. Das liegt dann am Spiel.
Dann musst du es mit ShellExecute oder so starten und direkt in ein Fenster packen. Oder direkt einen virtuellen Desktop in einem Fenster aufmachen.
qt fan
Beiträge: 53
Registriert: 28. Dezember 2007 21:41

Beitrag von qt fan »

ok, danke fuer die tips. hab jetz shellexecute probiert (also als ersten parameter mein handel uebergeben). es ging leider nicht.
bin ratlos, ich vermute das es keine so triviale loesung gibt, da der spieleentwickler das spiel selbst keiner solchen zugaenglich machen wollte.

dxwnd scheitert leider auch.

mfg qt fan
CaptnChaos
Beiträge: 605
Registriert: 28. Juni 2007 15:01
Kontaktdaten:

Beitrag von CaptnChaos »

erm... und das mit dem desktop erstellen?
google ma nach "virtueller desktop c++ windows" oder so.
das müsste eig funktionieren.
qt fan
Beiträge: 53
Registriert: 28. Dezember 2007 21:41

Beitrag von qt fan »

ich finde direkt programme wie virtual desktop oder virtual box, meinst du das damit?
CaptnChaos
Beiträge: 605
Registriert: 28. Juni 2007 15:01
Kontaktdaten:

Beitrag von CaptnChaos »

jain. kannst du bestimmt auch verwenden. einfach das spiel auf nen andern desktop schieben und hin und her switchen.
aber bei den sachen is auch quellcode bei....
ich habe leider meine festplatte verloren und vergessen ein update zu machen. ich habe auch mal sowas geschrieben. das hätte ich dir geben können....
qt fan
Beiträge: 53
Registriert: 28. Dezember 2007 21:41

Beitrag von qt fan »

also mit virtual box geht es bestimmt, aber das ist es fuer mich leider nicht. ich wollte mal so zum spass einen tempometer gadget schreiben (so in der art wie die sidebar gadgets von vista), um qt opengl spaeter mal naeher kennen lernen zu koennen. ohne uebungen, lern ich sonst ja garnnichts :) geht quasi im einen ohr rein und im andren wieder raus.

da sollte das game schon ganz einfach in einem fenster eingebettet nebenherlaufen. aber trotzdem danke fuer deine hilfe, hab jetzt wenigstens mal ein wenig mit mfc rumprobiert.

mfg qt fan
CaptnChaos
Beiträge: 605
Registriert: 28. Juni 2007 15:01
Kontaktdaten:

Beitrag von CaptnChaos »

hats funktioniert?
ich glaub auf mfc würden mich keine 10 pferde bringen. Da würde ich lieber normale winapi verwenden.
Antworten