17. april 2003 - 18:17
Der er
29 kommentarer og 1 løsning
Hvad betyder det her
int CDECL MessageBoxPrintf (TCHAR * szCaption, TCHAR * szFormat, ...) { TCHAR szBuffer [1024] ; va_list pArgList ; va_start (pArgList, szFormat) ; _vsntprintf (szBuffer, sizeof (szBuffer) / sizeof (TCHAR), szFormat, pArgList) ; va_end (pArgList) ; return MessageBox (NULL, szBuffer, szCaption, 0) ; } specielt er jeg i tvivl om hvad int CDECL MessageBoxPrintf( bla bla ) betyder...mest det CDECL halløj og så lige _vsntprintf (szBuffer, sizeof (szBuffer) / sizeof (TCHAR), szFormat, pArgList) ;
Annonceindlæg fra DE-CIX
17. april 2003 - 18:27
#2
cdecl er en calling convention ligesom stdcall og fastcall.
17. april 2003 - 18:33
#3
hvad gør vsntprintf helt nøjagtigt? den går vel ind og piller ved nogle af parametrerne? szBuffer ? calling convention ? hvad har det af betydning for funktionen...hvad hvis jeg udelader?
17. april 2003 - 18:34
#4
det virker jo stadig hvis jeg udelader det, kan jeg se
17. april 2003 - 18:38
#5
tror jeg er med teksten fra szFormat skal smides i szBuffer. Og de tmå ikke overstige det antal chars der er plads til = sizeof (szBuffer) / sizeof (TCHAR), right? og pArgList skal bruges i forbindelse med formatering af szFormat... %i'erne...er det korrekt?
17. april 2003 - 18:39
#6
Du kender printf: int a,b; printf("%d %d\n",a,b); så er der sprintf: int a,b; char buf[21]; sprintf(s,"%d %d\n",a,b); vsprintf fungerer ligesom sprintf bare med en va_list i.s.f. a og b d.v.s. at man tager alle de argumenter som kalderne er blevet kaldt med via ... og bruger _vsntprintf er sn sprintf for TCHAR.
17. april 2003 - 18:40
#7
va_list pArgList ; va_start (pArgList, szFormat) ; gemmer en form for referance til alle argumenter efter szFormat og og gemmer i pArgList.
17. april 2003 - 18:42
#8
ok...tak for det...det kommer nok et nyt spørgsmål om lidt :-) men gider du lige fortælle, hvordan jeg får sizeof (szBuffer) / sizeof (TCHAR) med i Messageboxen...jeg får jo at vide den ikke kan konvertere til en char *
17. april 2003 - 18:44
#9
CDECL er default. Men stdcall er jo ret udbredt (ofte forklædt som WINAPI).
17. april 2003 - 18:46
#10
det fatter jeg ikke så meget af, men ligemeget. Er ny indenfor cpp så mangler nok en del grundlæggende forståelse
17. april 2003 - 18:46
#11
Ikke forstået. sizeof (szBuffer) / sizeof (TCHAR) er den maksimale længde _vsntprintf må skrive i szBuffer. Den skal vel ikke skrives ud ?
17. april 2003 - 18:48
#12
men hvis nu jeg gerne vil skrive den ud... jeg fatter fx nada af hvorfor man i winnt.h laver en masse typedef af char *...kan ikke se hvorfor man skal til at skrive fx pchar, lpch, pch etc. Men der er jo forhåbentlig en dybere mening
17. april 2003 - 18:50
#13
ah...winapi er typedef af __stdcall
17. april 2003 - 18:50
#14
synes godt nok det er forbandet rodet, men det er måske fordi jeg er noob
17. april 2003 - 18:51
#15
eller define
17. april 2003 - 18:51
#16
stdcall and cdecl har noget at gøre med de instruktioner der bliver genereret for at lave et funktions kald. Det er vigtigt at man kalder med samme konvention som der forventes.
17. april 2003 - 18:53
#17
Hvis du vil se: sizeof (szBuffer) / sizeof (TCHAR) kan du vel bare konvertere den til en streng med en _vsntprintf og %d format og så MessageBox'e den.
17. april 2003 - 18:53
#18
det siger mig stadig intet...nok igen pga. manglende indsigt men tilbage til sizeof (szBuffer) / sizeof (TCHAR)
17. april 2003 - 18:53
#19
man kan ikke lave noget nemmere ligesom i java... "" + 3
17. april 2003 - 18:55
#20
MS har deres konventioner og sådan er det bare. En af ideerne med det er at gøre det nemmere at flytte kode mellem forskellige Windows platforme.
17. april 2003 - 18:56
#21
almindelig sprintf er lidt nemmere og hvis du er heldig så har de itoa !
17. april 2003 - 18:56
#22
har du icq?
17. april 2003 - 18:57
#23
char buf[10]; itoa(123,buf,10) vil lave en streng "123". (men det er ikke "the windows way")
17. april 2003 - 18:58
#24
Jeg er for gammel til ICQ. Kun email.
17. april 2003 - 18:59
#25
jeg er ved at hade cpp :-)
17. april 2003 - 19:10
#26
Der er et par ting du skal gøre dig klart: * C++ er et meget stort og komplekst sprog * Windows platformen har har en enorm mængde API'er og konventioner Det tager tid at sætte sig ind i.
17. april 2003 - 19:13
#27
ja, jeg prøver også at slappe af, men det er jo irriterende, når det kører rimelig godt i java, ik. Og så når man er i gang med projekt der bare kræver en smule gui, at det så skal være så svært.
17. april 2003 - 19:17
#28
Hvorfor tror du så mange programmører vælger VB ? Ikke fordi Win32 programmering i C++ er nemt ! :-)
17. april 2003 - 19:17
#29
Skal det være C++ ? Formentlig ville du føle dig mere hjemme i C#.
17. april 2003 - 19:19
#30
ja, et valgfag :-)
Kurser inden for grundlæggende programmering