c++ WinApi integer ausgeben

10/26/2011 01:13 Zwawo#1
Hay, also ich bin nun neu in der WinApi mit c++ und versuche mich grad an einem einfachen Rechner(ohne WinApi natürlich kein Problem).

Wie im Titel steht schaffe ich es nicht per "TextOut" oder per "MessageBox"
einen integer ausgeben zu lassen.
Ich hab schon gegooglet etc. bloß bin ich daraus nicht sehr viel schlauer geworden.

Bis jetzt hab ich halt das(Ausschnitt):

PHP Code:
...
int zahl1;

SendMessage(hwndZahl1WM_GETTEXT256, (LPARAM)zahl1); 
Nur fehlt mir noch die Ausgabe von "zahl1".
Hoffe ihr könnt mir helfen, hab damit ja erst angefangen :) .
10/26/2011 01:49 MrSm!th#2
Erstmal solltest du mit itoa bzw. itow (weiß gerade nicht, ob itow so existiert, aber so müsste die Unicode Version von itoa logischerweise heißen) zahl1 in ein char Array umwandeln, dann kannst du es SendMessage übergeben.
Allerdings dann natürlich WM_SETTEXT.

Mit sprinft würde es auch gehen.

Das gleiche natürlich bei MessageBox und Textout. Du kannst nicht einfach eine Zahl übergeben, wenn ein Char* gefragt ist. Wundert mich, dass dir das Programm nicht um die Ohren geflogen ist.
10/26/2011 02:01 Zwawo#3
Könntest du mir das bitte etwas mehr erklären, da ich nur die hälfte verstanden hab.

Zuerst hatte ich ja auch statt "int" "wchar_t" jedoch wusste ich nicht weiter und hab es einfach zu einem integer gemacht.(Der compiler liefert mir aber keine Fehler^^)
Wie gesagt die WinApi ist für mich noch neu^^.

(Die einzelne Ausgabe funktioniert jetzt)
Bzw. (bin grad müde) liegt das Problem am Ausgeben einer Lösung, da ich eine variable brauche die zahl1 und zahl2 addiert und die dann ausgibt.

Da ich meines Wissens nach keine 2 Variablen vom typ wchar_t addieren kann...
10/26/2011 03:13 link#4
Wenn du deine Controls nicht über einen Dialog Editor, in dem du die Control Identifier einstellen kannst, sondern über CreateWindowEx erstellst, musst du die ID-Konstanten erst definieren und dann entsprechend als 10. Parameter an CreateWindowEx übergeben.
Dann könntest du so Zahlenwerte anzeigen lassen:

Code:
int zahl1, zahl2, ergebnis;

zahl1 = GetDlgItemInt(hWnd, IDC_ZAHL1, NULL, TRUE);
zahl2 = GetDlgItemInt(hWnd, IDC_ZAHL2, NULL, TRUE);

ergebnis = zahl1 + zahl2;

SetDlgItemInt(hWnd, IDC_RESULT, ergebnis, TRUE);
Möglich wäre auch:

Code:
char buffer[32];
int zahl1, zahl2, ergebnis;

GetWindowText(hWndChild1, buffer, 32);
zahl1 = atoi(buffer);
GetWindowText(hWndChild2, buffer, 32);
zahl2 = atoi(buffer);

ergebnis = zahl1 + zahl2;

itoa(ergebnis, buffer, 10);
// oder:
sprintf(buffer, "%d", ergebnis)

SetWindowText(hWndChild3, buffer);
Einfach mal die MSDN und/oder eine C++-Referenz wegen der Parameter zu Rate ziehen.
10/26/2011 15:00 Zwawo#5
Ah danke, funktioniert nun.
Hab mich gerade noch gewundert warum buffer in GetWindowText als falsch makiert wird,
da fällt mir ein dass es ja n char ist :D -> A .
11/20/2011 21:21 Tyrar#6
@link ich hab da ne kleinigkeit einzuwenden :p

soweit ich weiss sind itoa usw. keine winapi funktionen.. da wäre schon eher lsprintfA besser... (irgendwie so müsste die funktion heissen! (kernel32.dll))
11/20/2011 21:59 xNopex#7
Quote:
c++ WinApi integer ausgeben
[..]
Erstmal solltest du mit itoa bzw. itow
[..]
lsprintfA
hmmm...
> [Only registered and activated users can see links. Click Here To Register...]

Jeweils die Methoden 1+2.
11/25/2011 23:28 MrSm!th#8
Quote:
Originally Posted by HeavyHacker View Post
@link ich hab da ne kleinigkeit einzuwenden :p

soweit ich weiss sind itoa usw. keine winapi funktionen.. da wäre schon eher lsprintfA besser... (irgendwie so müsste die funktion heissen! (kernel32.dll))
Sind nur WinApi Funktionen erlaubt?
11/26/2011 01:22 Tyrar#9
Quote:
Originally Posted by MrSm!th View Post
Sind nur WinApi Funktionen erlaubt?
so wie ich den TE mit "c++ WinApi integer ausgeben" verstanden habe: ja!