char[5] -> LPTSTR

chevyvan2000

Grünschnabel
Hallo,

bin noch Anfänger in sachen c/c++ hab bisher nur Pascal programmiert...
Bin an einer Win CE Anwendung mit embedded Visual C++ zugange.

Mein Problem ist ich möchte einen String (char array) in einen LPTSTR umwandeln:

char testStr[5]={"test"};
MessageBox(NULL,(LPTSTR)testStr,NULL,MB_OK);

Dann kommt bei der Ausgabe nur Kästchen raus.

MessageBox(NULL,TEXT("test"),NULL,MB_OK);

Funktioniert...
 
Hi.

Nimm einfach den generischen Typ TCHAR:
C:
TCHAR testStr[] = TEXT("test");
Ein LPTSTR ist nichts anderes als ein "(Long) Pointer to TCHAR String".

Eine andere Möglichkeit wäre in deinem Projekt Unicode und MBCS Unterstützung abzuschalten, dann ist ein TCHAR nichts anderes als ein char und ein LPTSTR ist dann ein "normaler" char-String.

Gruß
 
Danke für die schnelle antwort, das ding ist , das ich die testStr dynamisch aus einer datei füllen möchte und dann anzeigen:

TCHAR testStr[80];
FILE *InputFile;

InputFile=fopen("\\My Documents\\input.txt","r");
fscanf( InputFile, "%s\n", testStr);
fclose(InputFile);

MessageBox(NULL,(LPTSTR)testStr,NULL,MB_OK);
oder
Edit_SetText(GetDlgItem(hDlg,IDC_EDIT_BEZ), (LPTSTR)testStr);

in der textdatei steht z.B.:
Hallo du


es kommen da immer noch diese kästchen raus.
wo genau kann ich denn unicode umstellen?
 
Wo man das umstellen / einstellen kann weiß ich nicht. Irgendwo in den Projekeinstellungen muss es eine Möglichkeit geben.

Es ist allerdings sowieso besser die generischen Funktionen zu verwenden - dann kann das Programm als Unicode/MBCS bzw. ohne Unicode kompiliert werden.

Du mußt dann statt fscanf einfach nur _ftscanf verwenden. Ähnlich gibt es für andere Textfunktionen die standardmäßig mit dem char Datentyp arbeiten Ersatzfunktionen die mit Unicode bzw. mit MBCS Strings arbeiten (_tscanf statt scanf, _tprintf statt printf usw.)
Eine Übersicht gibt's hier: http://msdn.microsoft.com/library/d...ry/en-us/vclib/html/_crt_routine_mappings.asp

Du brauchst testStr auch nicht casten, das sollte nicht notwendig sein.

Gruß
 
vielen vielen dank, mit:

_ftscanf ( InputFile, TEXT("%s\n"), testStr);

funktioniert es ;-)
und mit sowas schlägt man sich dann stundenlang rum... ist halt so bei einer neuen syntax...
 
Zurück