Seite 1 von 1

[gelöst] QString zu LPCTSTR konvertieren?

Verfasst: 25. Juni 2007 21:14
von Burgpflanze
Wie geht das?
Ich brauche das, weil die Windows-API-Funktion FindWindow() LPCTSTR erwartet.

Verfasst: 25. Juni 2007 21:47
von -=Freaky=-
sorry ich kann es jetzt hier nicht probieren und weiss, dass es wahrscheinlich einfacher geht, aber ich habs mal ungefähr so gemacht glaub ich (bin nicht mehr ganz sicher) :

Code: Alles auswählen

#include <string>
#include <QString>
#include <windows.h>

QString qstr = "dies ist ein string";

LPCTSTR lpctstr( qstr.toStdWString().c_str() );
einfach mal ausprobieren.
ich habe das mit dem visual studio 2005 ee gemacht und musste, damit dabei keine fehlermeldung rauskam, die unicode-unterstützung für das projekt anschalten.

mfg,
julian

Verfasst: 25. Juni 2007 22:44
von Burgpflanze
Besten Dank! Funkioniert!

Verfasst: 25. Juni 2007 23:34
von Christian81
Burgpflanze hat geschrieben:Besten Dank! Funkioniert!
Aber ggf. fehleranfällig und eine Konvertierung zu viel... QString::utf16() und fertig.

Verfasst: 26. Juni 2007 02:13
von Burgpflanze
Christian81, dein Vorschlag funkioniert nicht, FindWindow() findet dann das Fenster nicht.

Verfasst: 26. Juni 2007 09:11
von Christian81
Dann machst du was falsch :)
FindWindowW((LPCWSTR)className.utf16(),(LPCWSTR)name.utf16())

Verfasst: 26. Juni 2007 11:42
von Burgpflanze
Hättest du auch gleich dazu schreiben können, das ich dann FindWindowW nehmen muss :roll: :wink:

Verfasst: 26. Juni 2007 11:54
von Christian81
FindWindowA -> Ansi version
FindWindowW -> Unicode version
FindWindow -> je nach Definition entweder A oder W, und da Du mit Qt arbeitest dachte ich es wird die W-Version genommen was aber (komischer Weise) nicht der Fall ist.

Die A-Versionen sind deprecated - Windows-intern wird alles in Unicode gehandelt