char* casten
-
Hallo community
ich komme aus der objektorientierten welt von java, und hab jetzt mit der winapi so meine probleme.also ich wollte eine combobox erstellen (ist mir auch gelungen) und dann halt mit items füllen, problem ist nur das ich das noch nicht so ganz mit diesen vielen verschiedenen "strings" verstehe, aufjedenfall wollte ich das hier erreichen:
SendMessage(combo, CB_ADDSTRING, 0, (LPARAM)TEXT("geht!"));nur mit dem unterschied das mein string in einem char array gespeichert ist:
char* buffer = "geht nicht!"; SendMessage(combo, CB_ADDSTRING, 0, (LPARAM)TEXT(buffer));doch leider bekomme ich von dem Compieler diese fehlermeldung:
'Lbuffer': nichtdeklarierter Bezeichnerso ich denke das ist jetzt eine ganz doofe anfängerfrage.

-
char* buffer = "So geht's!"; SendMessage(combo, CB_ADDSTRING, 0, (LPARAM)buffer);
Dieses TEXT() is einfach nur ein Makro das den String je nach Projekteinstellungen als ANSI oder Unicode interpretieren lässt.
Bei Projekten ohne Unicode ist es somit sogar mehr oder weniger überflüssig.
-
JustSomeCoder schrieb:
char* buffer = "So geht's!"; SendMessage(combo, CB_ADDSTRING, 0, (LPARAM)buffer);
Dieses TEXT() is einfach nur ein Makro das den String je nach Projekteinstellungen als ANSI oder Unicode interpretieren lässt.
Bei Projekten ohne Unicode ist es somit sogar mehr oder weniger überflüssig.So gehts zwar, aber das ist in WinAPI schlechter Coding-Style.
Nimm als Datentyp einfach TCHAR und verwende einfach das TEXT-Makro - da biste immer auf der sicheren Seite und kannst einfach zwischen ANSI und Unicode umschalten ohne Änderungen am Code vornehmen zu müssen. Wie oft ich das nun schon geschrieben habe...verwende doch mal die FORUMSUCHE...!
-
so ich hab mich hier jetzt mal angemeldelt, weil ich mich hier wohl häufiger melden werde :p
danke für die hilfe, das mit dem ANSI und Unicode hab ich nicht gewusst. aufjedenfall funzt es jetzt.
die forumsuche habe ich schon gequält, aber wie gesagt, wenn man nicht weis wonach man suchen muss (Unicode usw.) wird man auch nicht fündig.
-
Du solltest anstelle von "char" immer "TCHAR" verwenden, sonst geht es oft schief..