Seite 1 von 2
mit qwidgets ein spiel wrappen
Verfasst: 30. Dezember 2007 00:41
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
Verfasst: 4. Januar 2008 20:57
von qt fan
waere es moeglich meinen thread in das "Qt Programmierung" forum zu verschieben?
Verfasst: 7. Januar 2008 09:36
von CaptnChaos
hm, warum directx?
es gibt doch auch opengl, das ist genauso einfach.
Verfasst: 7. Januar 2008 09:43
von CaptnChaos
Verfasst: 7. Januar 2008 10:17
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.
Verfasst: 7. Januar 2008 10:40
von CaptnChaos
Ok, hab das auch noch reingemacht.
War ja nicht so schwer.
Verfasst: 7. Januar 2008 12:02
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.
Verfasst: 7. Januar 2008 13:47
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
Verfasst: 7. Januar 2008 15:19
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.
Verfasst: 7. Januar 2008 18:28
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
Verfasst: 7. Januar 2008 18:39
von CaptnChaos
erm... und das mit dem desktop erstellen?
google ma nach "virtueller desktop c++ windows" oder so.
das müsste eig funktionieren.
Verfasst: 7. Januar 2008 19:04
von qt fan
ich finde direkt programme wie virtual desktop oder virtual box, meinst du das damit?
Verfasst: 7. Januar 2008 19:14
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....
Verfasst: 8. Januar 2008 01:19
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
Verfasst: 8. Januar 2008 07:33
von CaptnChaos
hats funktioniert?
ich glaub auf mfc würden mich keine 10 pferde bringen. Da würde ich lieber normale winapi verwenden.