01. januar 2005 - 21:16
Der er
17 kommentarer og 1 løsning
Variabel string til DrawText
C++ newbien har endnu et spørgsmål :) CHAR mytext[100]; RECT rt; strcpy(mytext,"Heya"); GetWindowRect(hWnd, &rt); DrawText(hdc, &mytext, -1, &rt,DT_SINGLELINE | DT_CENTER | DT_VCENTER); I dette tilfælde siger compileren cannot convert parameter 2 from 'char (*)[100]' to 'const unsigned short *' -og andre trælse og (for mig) ubegribelige ting, når jeg prøver andre varianter. Kan nogen hjælpe mig med at få DrawText til at virke med en variabel streng? :) På forhånd tak!
Annonceindlæg fra Deloitte
01. januar 2005 - 21:19
#1
skal DrawText(hdc, &mytext, -1, &rt,DT_SINGLELINE | DT_CENTER | DT_VCENTER); ikke være DrawText(hdc, mytext, -1, &rt,DT_SINGLELINE | DT_CENTER | DT_VCENTER); altså uden & foran mytext i kaldet ?
01. januar 2005 - 21:23
#2
Nej, den har jeg prøvet. :P Så får jeg cannot convert parameter 2 from 'char [100]' to 'const unsigned short *' -men tak for forslaget.. :)
01. januar 2005 - 21:27
#3
Hvad så hvis du undlader den & men ændrer erklæringen fra CHAR til TCHAR ?
01. januar 2005 - 21:30
#4
Så får jeg (udover mit tudefjæs :D): cannot convert parameter 1 from 'unsigned short [100]' to 'char *'
01. januar 2005 - 21:32
#5
Ja men er det ikke i strcpy linien ??
01. januar 2005 - 21:33
#6
Æh, måske skal jeg huske at tilføje at det er Embedded Visual C++ 4.0 jeg sidder med?
01. januar 2005 - 21:34
#7
Jeg ændrede det til: TCHAR mytext[100]; RECT rt; strcpy(mytext,"Heya"); GetWindowRect(hWnd, &rt); DrawText(hdc, mytext, -1, &rt,DT_SINGLELINE | DT_CENTER | DT_VCENTER); -altså TCHAR i stedet for CHAR, og fjernede & tegnet.
01. januar 2005 - 21:35
#8
Og erstat så strcpy(mytext,"Heya"); med wcscpy(mytext,_T("Heya"));
01. januar 2005 - 21:37
#9
JAAA! Fantastisk, det virker! Lav et svar. Og hvis du kan, vil du så forklare hvad _T er for en fætter? Kan ikke finde den i hjælpen?!
01. januar 2005 - 21:40
#10
svar
01. januar 2005 - 21:41
#11
Tak for hjælpen!
01. januar 2005 - 21:41
#12
ANSI UNICODE TCHAR char wchar_t (reelt en short) _T("xxx") er en TCHAR konstant d.v.s. en char* i ANSI mode og en wchar_t i UNICODE mode.
01. januar 2005 - 21:42
#13
Iøvrigt burde der ikke bruges wcscpy men _tcscpy iden den bliver til strcpy i ANSI mode og wcscpy i UNICODE mode.
01. januar 2005 - 21:56
#14
æhh! okay! Tusind tak for hjælpen. Jeg må indrømme at jeg er stået lidt af på det med ANSI/UNICODE, men jeg vil prøve at lade som ingenting, indtil jeg får lidt mere styr på C++ i det hele taget :)
01. januar 2005 - 23:22
#16
Ah okay! Nååh så faldt dén 10-øre :) tak igen. jeg takker snart over, så jeg må hellere bare gå i seng.
02. januar 2005 - 10:27
#17
Hvis jeg husker rigtig, er _T en MFC makro og eftersom du ikke ellers anvender MFC, bør du bruge TEXT makroen istedet.
02. januar 2005 - 10:59
#18
Petzold bruger TEXT men nævner _T og __T og siger at hvilken man vælger afhænger af hvor kort koden skal være - det er godt nok for mig.
Kurser inden for grundlæggende programmering