Newsgroup: it.comp.programmare.win32
Titolo: vc++ emebedded: errore SetWindowText

sto utilizzando VC++ 4.0 embedded
void CProva_tastiView::OnLButtonDown(UINT nFlags, CPoint point)
{
     char *MsgCoord  = new char[20];
     sprintf(MsgCoord, "Left Button at P(%d, %d)", point.x, point.y);
     SetWindowText(MsgCoord);
}
mi vi viene generato il seguente errore :
error C2664: 'SetWindowTextW' : cannot convert parameter 1 from 'char *' 
to 'const unsigned short *'
PS se volessi usare MessageBox(_T...) al posto di setwindowtext?

 
Sarebbe la stessa cosa.
Windows CE supporta solo stringhe in unicode.
Devi mettere una L davanti alle tue costanti stringa (ex: L"ciao") o, 
ancora meglio, usare la macro TEXT():
TEXT("ciao")
che ti consente di compilare i sorgenti in modo trasparente sia in 
unicode che in ASCII.
Inoltre al posto di char devi usare unsigned short o (molto meglio) 
la macro TCHAR.
Quando allochi memoria per una stringa o devi passare la dimensione 
della stringa in byte devi moltiplicare il numero di caratteri per 2 
o (meglio) per sizeof(TCHAR).
-- 
Valter Minute
(the reply address of this message is invalid)
(l'indirizzo di reply di questo messaggio non è valido)

 
ho modificato il codice cosi' ma continua a generarmi errori:
void CProva_tastiView::OnLButtonDown(UINT nFlags, CPoint point)
{
     TCHAR szNewText;
 
     wsprintf(szNewText, _T("P(%d, %d)"), point.x, point.y);
     SetWindowText(szNewText);
}
'wsprintfW' : cannot convert parameter 1 from 'unsigned short' to 
'unsigned short *'
'SetWindowTextW' : cannot convert parameter 1 from 'unsigned short' to 
'const unsigned short *'

thefly ha scritto:

FUNZIONA:
void CProva_tastiView::OnLButtonDown(UINT nFlags, CPoint point)
{
     TCHAR *szNewText;
 
     wsprintf(szNewText, _T("P(%d, %d)"), point.x, point.y);
     MessageBox(szNewText);
}
grazie mille!

      wsprintf(szNewText, _T("P(%d, %d)"), point.x, point.y);
la wsprintf utilizza stringhe UNICODE, tu gli passi un singolo 
carattere. 
Se cerchi nell'help vedrai che c'è una versione TCHAR (macro).
Se usi la versione TCHAR diventerà:
_stprintf(szNewText, _T("P(%d, %d)"), point.x, point.y);
Il vantaggio è che lo stesso codice lo puoi compilare in modalità 
ASCII.
Ho visto che usi _T() invece che TEXT(). Sono equivalenti, 
personalmente TEXT mi sembra più chiara, però è una questione di 
preferenze.
Se ti abitui ad utilizzare le macro collegate a TCHAR scriverai 
codice portabile tra ASCII e UNICODE.
[...]
P.S. Quando rispondi, evita di riportare tutto il testo del 
messaggio. Riporta solo i punti più interessanti.


 }
A vederla su due piedi sembrerebbe mancare un argomento...
BOOL SetWindowText(
    HWND hWnd, // handle of window or control
    LPCTSTR lpString  // address of string
   );
Parameters
hWnd
Identifies the window or control whose text is to be changed.
lpString
Points to a null-terminated string to be used as the new title or control
text.
P.S Un bel delete[] MsgCoord; dopo SetWin...  non ci starebbe male ;-)

//COORDINATE MOUSE
void CInterfaceView::OnLButtonDown(UINT nFlags, CPoint point)
{
     TCHAR *szNewText;
 
     _stprintf(szNewText, TEXT("Click in P(%d, %d)"), point.x, point.y);
     MessageBox(szNewText);
}
vorrei sostituire MessageBox con il controllo Tooltip: come fare?
ciao a tutti