Strings und if/ofstreams mit WinApi?
-
1:
Wie kann man Strings z.B. mit MessageBox benutzen?string sString; MessageBox(NULL,/*sString oder TEXT(sString.c_str)..geht alles nicht*/,TEXT(".."), MB_OK);
2:
Wie kann man ofstreams/ifstreams benutzen?string input; ifstream in; in.open("data.txt", ios::in); getline(in,input);
Gibt es sowas ähnliches, wenn möglich auch mit of/ifstreams?
-
zu 1.
MessageBoxA(NULL, sString.c_str(), "..", MB_OK);
oder
MessageBoxW(NULL, TEXT(sString.c_str()), TEXT(".."), MB_OK);
also hier nich verwechseln... c_str() is ne funktion der string klasse also die "()" nich vergessen
zu 2.
dein code muss so klappen...
hast du auch den string header includet? also nich nur iostream! Müsste so aussehen:#include <iostream> #include <fstream> #include <string>
-
Ok, vielen Dank es Funktioniert.
Nur habe ich jetzt ein anderes Problem://in.open... string sfound; hdc = GetDC(hwnd); GetTextMetrics(hdc, &tm); cxChar = tm.tmAveCharWidth; cxCaps = (tm.tmPitchAndFamily & 1 ? 3 : 2) * cxChar / 2; cyChar = tm.tmExternalLeading; ReleaseDC(hwnd, hdc); getline(in, sFound); hdc = BeginPaint(hwnd, &ps); TextOutA(hdc,100,100, szFound.c_str(), szFound.length()); EndPaint(hwnd, &ps);
Dieser Code lässt sich zwar kompilieren, geht aber trotzdem nicht.
In dem Fenster wird einfach nichts ausgegeben. In der Datei steht "HallO" aber trotzdem, nichts...Und mit
TextOutW(hdc,100,100, TEXT(sFound.c_str()), szFound.length());
Lässt es sich nicht kompilieren, da steh dann "ERROR: Der Bezeichner "LsFound" ist nicht definiert."
Wie kann ich das jetzt berichtigen?
MFG!
-
Solange Du mit UNICODE nicht richtig umgehen kannst, wäre es vermutlich am einfachsten, zunächst mal Deine Projekte als Mulitbytecharacter-Projekte zu erstellen. Dann brauchst Du keine TEXT - Makros und die A's und W's am Ende der WinApi-Funktionsaufrufe (zB. TextOut) kannst Du Dir auch sparen.
Wenn wir nicht wissen, ob Dein Projekt UNICODE oder Multibyte benutzt, ist es schwierig, Deine Beispiele nachzuvollziehen und Hilfestellung zu geben.