Zitat von
Luckie:
Mache ich denn das so richtig? Funktionieren tut es, aber das muss noch lange nichts heißen.
Das funktioniert so nur, wenn du das Symbol
UNICODE definierst.
In der Datei <tchar.h> wird TCHAR eben als "char" oder als "wchar_t" definiert, je nachdem ob
UNICODE definiert ist oder nicht. Dort gibt es auch eine ganze Menge von Definitionen, die mit "_t" beginnen (so wird z.B. _tcscpy zu strcpy oder wcscpy).
Auch in <windows.h> wird nach
UNICODE unterschieden. Somit ist "FindFirstFile" einfach definiert als entweder "FindFirstFileA" oder "FindFirstFileW".
Fazit:
Wenn du <tchar.h> benutzt, dann benutze den Typen TCHAR und
nicht explizit die Widechar-Funktionen des
API. Außerdem solltest du alle Character- und String-Konstanten in _T() einschließen. Dann kannst du nämlich mit "-DUNICODE" eine
Unicode-Anwendung compilieren und ohne diesen Schalter eben eine
Ansi-Anwendung. Dort wo's nicht anders geht (z.B. ist "%s" in allen printf-Varianten
immer ein
Ansi-String und "%S" ein
Unicode-String) musst du dann ggf.mit "#ifdef
UNICODE ... #else ... #endif" den Code so oder so schreiben.
ODER
Wenn du
immer die
Unicode-Varianten nehmen willst, dann benutze auch direkt "wchar_t" als Typ, schreibe direkt L vor jede Character- und String-Konstante und benutze direkt die Widechar-Varianten der
API-Funktionen.