..nun weiss ich aber nicht wie ich aber der Prozedur sonst die HWND Namen der Textboxen übergeben kann ..
Kannst ja textbox auch Global deklarieren, so wie die Box_id.
Viele Grüße
Folge dem Video um zu sehen, wie unsere Website als Web-App auf dem Startbildschirm installiert werden kann.
Anmerkung: Diese Funktion ist in einigen Browsern möglicherweise nicht verfügbar.
..nun weiss ich aber nicht wie ich aber der Prozedur sonst die HWND Namen der Textboxen übergeben kann ..
Kannst ja textbox auch Global deklarieren, so wie die Box_id.
#include <windows.h>
int Box_id = 123;
int IBox_id= 124;
int button_id= 125;
HWND Textbox;
HWND Textbox2;
bool Prozedur(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam);
void ausgeben(HWND textbox, HWND Itextbox);
void ausgeben(HWND textbox, HWND Itextbox)
{
int x = GetWindowTextLength(textbox);
char buffer[x];
GetWindowText(textbox, buffer,x+1);
int y = GetWindowTextLength(Itextbox);
char Ibuffer[y];
GetWindowText(Itextbox ,Ibuffer,x+1);
char mainBuffer[x+y+1];
strcpy(mainBuffer, buffer);
strcat(mainBuffer, " ");
strcat(mainBuffer, Ibuffer);
MessageBox(NULL, mainBuffer, "Inhalt", MB_OK);
}
int WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
MSG msg;
HWND Fenster = CreateWindowEx(0, WC_DIALOG, "Fenster", WS_VISIBLE | WS_OVERLAPPEDWINDOW, 1, 1, 400, 300, NULL, NULL, NULL, NULL);
HWND Textbox = CreateWindowEx(WS_EX_CLIENTEDGE, "EDIT", "", WS_VISIBLE | WS_CHILD, 10, 25, 200, 25, Fenster, (HMENU)Box_id, NULL, NULL);
HWND Textbox2= CreateWindowEx(WS_EX_CLIENTEDGE, "EDIT", "", WS_VISIBLE | WS_CHILD, 10, 55, 200, 25, Fenster, (HMENU)IBox_id, NULL, NULL);
HWND Button = CreateWindowEx(0, "BUTTON", "Ausgeben", WS_VISIBLE | BS_PUSHBUTTON | WS_CHILD, 10, 85, 100, 25, Fenster, (HMENU)button_id, NULL, NULL);
SetWindowLong(Fenster, DWL_DLGPROC, (long)Prozedur);
while(GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return 0;
}
bool Prozedur(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
if(message == WM_CLOSE){; PostQuitMessage(0);}
if(message == WM_COMMAND && HIWORD(wParam) == EN_CHANGE && LOWORD(wParam) == Box_id)
{
//weitere Funktionen die beim ändern des Textes passieren sollen
}
if(message == WM_COMMAND && LOWORD(wParam) == button_id)
{
ausgeben(Textbox, Textbox2);
}
return 0;
}
2. Wenn du weiter oben guckst siehst du das Thomasio mir diesen Code-Schnipsel zugeworfen hat .. ich habs nur mit in meinen bisherigen Quellcode eingefügt bzw. verändert (also wenn du ihn vllt. "Reparieren" könntest .. :] )
int x = GetWindowTextLength(Textbox);
int y = GetWindowTextLength(Textbox2);
char buf[x + y + 1];
int c = GetWindowText(Textbox, buf, x+1);
GetWindowText(Textbox2, buf + c, y+1);
Am einfachsten wäre eine globale Definition, da hat Bullja schon recht. Wenn das bei dir nicht geht, dann zeig deinen Code.wenn ich die Anweisung in der Nachrichten-Prozedur für einen Button schreibe ..
Code:if(message == WM_COMMAND && LOWORD(wParam) == button_id){ ... }
.. dann hab ich das Problem das der Compiler mir sagt, dass er in folgender Zeile:
Code:int x = GetWindowTextLength(textbox);
nicht weiss was textbox is ("textbox" undeclared first use this function)
..nun weiss ich aber nicht wie ich aber der Prozedur sonst die HWND Namen der Textboxen übergeben kann ..
Die Lösung wurde dir doch schon mehrfach an den Kopf geworfen: definiere die Textboxen ausschließlich global und nicht nochmal extra innerhalb der Funktion.Jaa .. richtig .. und wenn ich die Textboxen nur in der WinMain definiere dann kennt die Prozedur die Boxen nich (undeclared .. )
daraus resultiert die Frage wie ich der Prozedur HWND Textbox übergeben kann ..
ich habs wie oben schon gesagt auch inner Funktion schon versucht um das zu umgehen aber anscheinend geht das auch nicht ..
Wie schon gesagt -.- ...
Die Lösung wurde dir doch schon mehrfach an den Kopf geworfen: definiere die Textboxen ausschließlich global und nicht nochmal extra innerhalb der Funktion.
#include <windows.h>
int Box_id = 123;
int IBox_id= 124;
int button_id= 125;
HWND Textbox;
HWND Textbox2;
bool Prozedur(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam);
void ausgeben(HWND textbox, HWND Itextbox);
void ausgeben(HWND textbox, HWND Itextbox)
{
int x = GetWindowTextLength(textbox);
char buffer[x];
GetWindowText(textbox, buffer,x+1);
int y = GetWindowTextLength(Itextbox);
char Ibuffer[y];
GetWindowText(Itextbox ,Ibuffer,x+1);
char mainBuffer[x+y+1];
strcpy(mainBuffer, buffer);
strcat(mainBuffer, " ");
strcat(mainBuffer, Ibuffer);
MessageBox(NULL, mainBuffer, "Inhalt", MB_OK);
}
int WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
MSG msg;
HWND Fenster = CreateWindowEx(0, WC_DIALOG, "Fenster", WS_VISIBLE | WS_OVERLAPPEDWINDOW, 1, 1, 400, 300, NULL, NULL, NULL, NULL);
Textbox = CreateWindowEx(WS_EX_CLIENTEDGE, "EDIT", "", WS_VISIBLE | WS_CHILD, 10, 25, 200, 25, Fenster, (HMENU)Box_id, NULL, NULL);
Textbox2= CreateWindowEx(WS_EX_CLIENTEDGE, "EDIT", "", WS_VISIBLE | WS_CHILD, 10, 55, 200, 25, Fenster, (HMENU)IBox_id, NULL, NULL);
HWND Button = CreateWindowEx(0, "BUTTON", "Ausgeben", WS_VISIBLE | BS_PUSHBUTTON | WS_CHILD, 10, 85, 100, 25, Fenster, (HMENU)button_id, NULL, NULL);
SetWindowLong(Fenster, DWL_DLGPROC, (long)Prozedur);
while(GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return 0;
}
bool Prozedur(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
if(message == WM_CLOSE){; PostQuitMessage(0);}
if(message == WM_COMMAND && HIWORD(wParam) == EN_CHANGE && LOWORD(wParam) == Box_id)
{
//weitere Funktionen die beim ändern des Textes passieren sollen
}
if(message == WM_COMMAND && LOWORD(wParam) == button_id)
{
ausgeben(Textbox, Textbox2);
}
return 0;
}