inttostr()
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ř.:
[CODE]
CString str;
int nTest = 10;
str.Format(_T("%d"), nTest);
[/CODE]
1) použití třídy CString a její metody Format
2) použití wsprintf, což je vlastně to, co CString::Format provádí
např.:
[CODE]
CString str;
int nTest = 10;
str.Format(_T("%d"), nTest);
[/CODE]
Nejsi v ničem omezenej. Stačí jen přetypování:
[CODE]
LPTSTR lpszTest;
wsprintf(lpszTest, _T("%d"), 10);
DrawText(hDC, (LPCTSTR)lpszTest, -1, &rect, DT_LEFT);
[/CODE]
Toť vše :)
[CODE]
LPTSTR lpszTest;
wsprintf(lpszTest, _T("%d"), 10);
DrawText(hDC, (LPCTSTR)lpszTest, -1, &rect, DT_LEFT);
[/CODE]
Toť vše :)
jsem asi blbej, ale kdyz tam dam:
[CODE]
LPCTSTR szText;
wsprintf(szText, _T("%d"), 10);
[/CODE]
pise mi to:
[QUOTE]'wsprintfW' : cannot convert parameter 1 from 'const unsigned short *' to 'unsigned short *'[/QUOTE]
chjo... Ccko mi nikdy moc neslo. Ja radsi Pascal/Delphi
[CODE]
LPCTSTR szText;
wsprintf(szText, _T("%d"), 10);
[/CODE]
pise mi to:
[QUOTE]'wsprintfW' : cannot convert parameter 1 from 'const unsigned short *' to 'unsigned short *'[/QUOTE]
chjo... Ccko mi nikdy moc neslo. Ja radsi Pascal/Delphi
muj uplne posledni problem (slibuju :))
po pridani #include (pro CString) mi nejde kompilace:
(nic jineho jsem nemenil)
[QUOTE]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.
[/QUOTE]
po pridani #include
(nic jineho jsem nemenil)
[QUOTE]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.
[/QUOTE]
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:
[CODE]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);
[/CODE]
[CODE]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);
[/CODE]
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:
[CODE]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);
[/CODE]
[CODE]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);
[/CODE]