Je v eVC nejaky ekvivalent fce. inttostr()
(tzn. pro prevod integeru na string?)
Je v eVC nejaky ekvivalent fce. inttostr()
(tzn. pro prevod integeru na string?)
Možnosti jsou dvě:
1) použití třídy CString a její metody Format
2) použití wsprintf, což je vlastně to, co CString::Format provádí
např.:
Kód:CString str; int nTest = 10; str.Format(_T("%d"), nTest);
a kdyz ho chci dostat do LPCTSTR a pak vypsat na obrazovku?
Nejsi v ničem omezenej. Stačí jen přetypování:
Toť všeKód:LPTSTR lpszTest; wsprintf(lpszTest, _T("%d"), 10); DrawText(hDC, (LPCTSTR)lpszTest, -1, &rect, DT_LEFT);![]()
jsem asi blbej, ale kdyz tam dam:
pise mi to:Kód:LPCTSTR szText; wsprintf(szText, _T("%d"), 10);
chjo... Ccko mi nikdy moc neslo. Ja radsi Pascal/Delphi'wsprintfW' : cannot convert parameter 1 from 'const unsigned short *' to 'unsigned short *'
Nene ... podívej se přesně na ten kód, co jsem ti napsal![]()
a jo! :sarcastic:![]()
![]()
muj uplne posledni problem (slibuju)
po pridani #include <afx.h> (pro CString) mi nejde kompilace:
(nic jineho jsem nemenil)
uafxwce.lib(dllmodul.obj) : error LNK2005: _DllMain already defined in Test.obj
uafxwce.lib(afxmem.obj) : error LNK2005: "void * __cdecl operator new(unsigned int)" (??2@YAPAXI@Z) already defined in coredll.lib(COREDLL.dll)
uafxwce.lib(afxmem.obj) : error LNK2005: "void __cdecl operator delete(void *)" (??3@YAXPAX@Z) already defined in coredll.lib(COREDLL.dll)
uafxwce.lib(dllmodul.obj) : warning LNK4006: _DllMain already defined in Test.obj; second definition ignored
uafxwce.lib(afxmem.obj) : warning LNK4006: "void * __cdecl operator new(unsigned int)" (??2@YAPAXI@Z) already defined in coredll.lib(COREDLL.dll); second definition ignored
uafxwce.lib(afxmem.obj) : warning LNK4006: "void __cdecl operator delete(void *)" (??3@YAXPAX@Z) already defined in coredll.lib(COREDLL.dll); second definition ignored
Creating library X86Rel/Test.lib and object X86Rel/Test.exp
X86Rel/Test.dll : fatal error LNK1169: one or more multiply defined symbols found
Error executing link.exe.
Tohle je problém. Třída CString patří do MFC (Microsoft Foundation Classes) a je součástí knihovny, která je distribuovaná spolu s eVC++3.0 Tahle knihovna má definovanou fci DLLMain stejně jako tvoje knihovna, kterou vytváříš (viz. zdrojáky) Není tedy možné linkovat do tvé DLL knihovnu (ani její část) MFC. Programování Today Plug-in je věcí čistého Win32 API. Proto se budeš muset obejít bez CString apod...
No a bez pouziti CString to jde napr. i takhle:
Kód:TCHAR szStr[100]; int nTest = 10; memset(szStr, 0, sizeof(TCHAR) * 100); _stprintf(szStr, _T("%d"), nTest); DrawText(hDC, (LPCTSTR)szStr, -1, &rect, DT_LEFT);
Nebo pokud nechcete plýtvat stackem (obzvláště používáte-li dlouhé řetězce), pak doporučuji klasické použití datového typu LPTSTR místo pole TCHAR:
Kód:int nLength = 10; LPTSTR lpszText = (LPTSTR)LocalAlloc(LPTR, sizeof(TCHAR) * nLength); if (lpszText == NULL) // chyba _stprintf(lpszText, _T("%d"), nLength); DrawText(hDC, (LPCTSTR)lpszText, -1, &rect, DT_LEFT); LocalFree((HLOCAL)lpszText);
A co _itoa?
Kód:char *_itoa( int value, char *string, int radix ); Parameters value --- Number to be converted string -- String result radix --- Base of value; must be in the range 2 – 36