hae, bin ich bloed ?
-
_tcsncpy_s(fm.szFaceName, strFontName.data(), LF_FACESIZE);in der einen klasse - no errors or warnings
_tcsncpy_s(ti.lpszText, strTip.c_str(), strTip.length());in einer anderen klasse - "error C2660: 'wcsncpy_s' : function does not take 3 arguments"
sei es unicode oder multibyte compilationwas soll der bloedsinn ?
_tcsncpy_s nimmt drei argumente an und bekommt auch drei - beide klassen werden compiliert, bei dem einen keine fehler bei den anderen schonhae
-
data() gibt imho was anderes zurück als c_str().
-
Was für einen Typ hat denn 'strTip'? Wenn du für UNICODE Compilerst, benötigst du einen wstring.
@phlox: inhaltlich gibt es einen Unterschied, aber technisch liefern beide Methoden einen const char*

-
in beiden faellen ist der source string ein "DString" welches ein define ist zwischen std::string und std::wstring
data() und c_str() sind das selbe, war durch rumprobieren nur irtendwie auf das c_str gelandethab das nun so geloest:
TCHAR *str = new TCHAR[strTip.length()+1]; SecureZeroMemory(str, strTip.length()+1); _tcsncpy_s(str, strTip.length()+1, strTip.c_str(), strTip.length()); ti.lpszText = str;trotzdem finde ich das sehr merkwuerdig
-
data() und c_str() sind nicht das Gleiche. c_str() ist auf jedem Fall Nullterminiert, data() nicht unbedingt.
-
es geht aber sowohl als auch nicht - bei beiden schluckts der compiler nicht /=
btw
fm = CHARFORMAT2
ti = TOOLINFO