ich bins mal wieder,
wie kann ich eine messagebox mit eingabefeld machen, die eine INT-zahl speichert???
Ist das eingegebene dann gleich 'ne zahl oder wird dass als string angesehen (oder char?) ??
edit: Titel geändert.
[ Dieser Beitrag wurde am 17.11.2002 um 16:13 Uhr von cd9000 editiert. ]
öööh, windows, VC++
ich dachte es gibt einen einfachen befehl mit dem man eine eingabe
des benutzers machen kann, muss das verschoben werden?????
ich verstehe nicht wieso das nicht hier reinpassen soll!
erst schreibe ich einen beitrag in das MFC forum und der wird sofort von euch gesperrt *grrr*
dann schreib ich hier rein und ihr meckert wieder !!!!!
[edit]hier ist mal ein beispiel, wie es aussehen soll,
für die, die noch nicht wissen, was ich meine.
einfach den link in ein browserfenster kopieren und starten
[java]
javascript:window.prompt('Testbox','test')[/code]
[/edit]
[ Dieser Beitrag wurde am 14.11.2002 um 17:43 Uhr von Netspider editiert. ]
sowas ist mit standard c++ definitiv nicht zu erreichen. wenn es dir nur auf die eingabe, nicht das fensterchen ankommt, dann kannst dus ueber die konsole machen.
lies mal was ueber cin und cout.
naja, ich wusel so ein bisschen in Opengl rum und wollte aber vom user noch eine zahl abfragen, bevor das programm richtig startet, also mit windows und VC++, OpenGL und wenig ahnung ;-)
aber ein NIMM-Spiel habe icch schon hinbekommen *g*
- 21 streichhölzer am anfang, man nimmt immer 1-3, dann comp, wer das letzt zieht hat verloren *bg* -
Da musst du dir wohl oder übel einen eigenen Dialog basteln.
_________________ Riskiere doch mal einen Blick auf www.WebFritzi.de.vu
FROM: doofie (192.255.2.88); TO: WebFritzi (212.128.130.6)
hi, i'm a signature virus. copy me into your signature to help me spread.
...oder WebFritzi arbeiten lassen. Ich habe jetzt die ganze Nacht durchgearbeitet, um diesen dummen Dialog zu basteln (ohne Resource). Dabei ist folgende cpp-Datei herausgekommen ([edit]überarbeitete Version[/edit]):
LPWORD InitDialog(LPVOID lpv, LPCTSTR title, DWORD style, WORD ctrlno, LPCTSTR fontname,
WORD fontsize, short x, short y, short cx, short cy)
{
LPWORD lpw;
LPWSTR lpwsz;
int nchar, wcharlength;
LPDLGTEMPLATE lpdt = (LPDLGTEMPLATE)lpv;
LPWORD CreateDlgControl(LPWORD lpw, WORD ctrlclass, WORD id, LPCTSTR caption,
DWORD style, short x, short y, short cx, short cy)
{
LPDLGITEMTEMPLATE lpdit;
LPWSTR lpwsz;
int nchar, wcharlength;
LPWORD InitDialog(LPVOID lpv, LPCTSTR title, DWORD style, WORD ctrlno, LPCTSTR fontname,
WORD fontsize, short x, short y, short cx, short cy)
{
LPWORD lpw;
LPWSTR lpwsz;
int nchar, wcharlength;
LPDLGTEMPLATE lpdt = (LPDLGTEMPLATE)lpv;
LPWORD CreateDlgControl(LPWORD lpw, WORD ctrlclass, WORD id, LPCTSTR caption,
DWORD style, short x, short y, short cx, short cy)
{
LPDLGITEMTEMPLATE lpdit;
LPWSTR lpwsz;
int nchar, wcharlength;
LPWORD InitDialog(LPVOID lpv, LPCTSTR title, DWORD style, WORD ctrlno, LPCTSTR fontname,
WORD fontsize, short x, short y, short cx, short cy)
{
LPWORD lpw;
LPWSTR lpwsz;
int nchar, wcharlength;
LPDLGTEMPLATE lpdt = (LPDLGTEMPLATE)lpv;
LPWORD CreateDlgControl(LPWORD lpw, WORD ctrlclass, WORD id, LPCTSTR caption,
DWORD style, short x, short y, short cx, short cy)
{
LPDLGITEMTEMPLATE lpdit;
LPWSTR lpwsz;
int nchar, wcharlength;
Dann kannst du eine solche InputBox wie folgt aufrufen:
C/C++ Code:
1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9
char buffer[256];
int ret = InputBox(hwnd, "Eingabe in diesem Feld:", "Titel", buffer, 256);
if(ret == IDOK)
MessageBox(hwnd, buffer, "Die Eingabe war:", MB_OK | MB_ICONINFORMATION);
else if(ret == IDCANCEL)
MessageBox(hwnd, "Es wurde \"Abbrechen\" gewählt", "INFO", MB_OK | MB_ICONINFORMATION);
else if(ret == 0)
MessageBox(hwnd, "Ein Fehler ist aufgetreten", "INFO", MB_OK | MB_ICONERROR);
C/C++ Code:
1 2 3 4 5 6 7 8 9
char buffer[256];
int ret = InputBox(hwnd, "Eingabe in diesem Feld:", "Titel", buffer, 256);
if(ret == IDOK)
MessageBox(hwnd, buffer, "Die Eingabe war:", MB_OK | MB_ICONINFORMATION);
else if(ret == IDCANCEL)
MessageBox(hwnd, "Es wurde \"Abbrechen\" gewählt", "INFO", MB_OK | MB_ICONINFORMATION);
else if(ret == 0)
MessageBox(hwnd, "Ein Fehler ist aufgetreten", "INFO", MB_OK | MB_ICONERROR);
C/C++ Code:
1 2 3 4 5 6 7 8 9
char buffer[256];
int ret = InputBox(hwnd, "Eingabe in diesem Feld:", "Titel", buffer, 256);
if(ret == IDOK)
MessageBox(hwnd, buffer, "Die Eingabe war:", MB_OK | MB_ICONINFORMATION);
else if(ret == IDCANCEL)
MessageBox(hwnd, "Es wurde \"Abbrechen\" gewählt", "INFO", MB_OK | MB_ICONINFORMATION);
else if(ret == 0)
MessageBox(hwnd, "Ein Fehler ist aufgetreten", "INFO", MB_OK | MB_ICONERROR);
Ich habe jetzt rund 48 Stunden dafür gebraucht. Dabei war Knobeln an der Tagesordnung, denn die MS-Dokumentation zu DialogBoxIndirect() ist sehr schlecht und fehlerhaft in mehreren Punkten. Im Netz ist auch nicht das Wahre zu finden. Aber jetzt steht das ganze hoffentlich (ohne Fehler), und man kann nicht nur InputBoxes damit erstellen, sondern Dialoge jeglicher Art. Dazu schaue man sich die Funktion InputBox() an. Diese nutzt wiederum die Funktionen InitDialog() und CreateDlgControl(), mit denen man seinen Dialog erstellen kann wie auch in einem Resourcen-Script. Viel Spaß damit.
[ Dieser Beitrag wurde am 22.02.2003 um 21:30 Uhr von WebFritzi editiert. ]
_________________ Riskiere doch mal einen Blick auf www.WebFritzi.de.vu
FROM: doofie (192.255.2.88); TO: WebFritzi (212.128.130.6)
hi, i'm a signature virus. copy me into your signature to help me spread.
öhm ... WebFritzi, bin hier mal als Trittbrettfahrer. Son Ding hab ich schon öfter gebraucht, bin blos bislang nicht dazu gekommen das selber zu basteln. Hab deinen Code zwar noch nicht probiert, aber sieht gut aus. Denke, ich werd da einen "Standard-Include" bei mir draus machen.
Vielleicht kann ich mich ja mal mit irgendwas revangieren.
@frage!
Weil ich das eben mit nem Dialog machen wollte. Hast du noch nie das Gefühl gehabt, eine Herausforderung annehmen zu müssen?
@dange!
Bidde!
[ Dieser Beitrag wurde am 11.12.2002 um 00:23 Uhr von WebFritzi editiert. ]
_________________ Riskiere doch mal einen Blick auf www.WebFritzi.de.vu
FROM: doofie (192.255.2.88); TO: WebFritzi (212.128.130.6)
hi, i'm a signature virus. copy me into your signature to help me spread.
Für den FAQ-Leser: Alles, was jetzt noch kommt, ist unwichtig!
[ Dieser Beitrag wurde am 11.12.2002 um 00:24 Uhr von WebFritzi editiert. ]
_________________ Riskiere doch mal einen Blick auf www.WebFritzi.de.vu
FROM: doofie (192.255.2.88); TO: WebFritzi (212.128.130.6)
hi, i'm a signature virus. copy me into your signature to help me spread.
ich hätte nicht gedacht, dass es so schwer ist eine inputbox zu machen,
das ist ja wahnsinn, bin ich der erste der sowas braucht(e)??
ich schaffs nicht, die datei einzubinden, der meckert immer irgendwo rum,
ich habe eine inputbox.h erstellt, in der steht das:
C/C++ Code:
int InputBox(HINSTANCE hInst, HWND hwnd, LPCTSTR prompt, LPCTSTR title, LPTSTR buffer, INT buflength);
C/C++ Code:
int InputBox(HINSTANCE hInst, HWND hwnd, LPCTSTR prompt, LPCTSTR title, LPTSTR buffer, INT buflength);
C/C++ Code:
int InputBox(HINSTANCE hInst, HWND hwnd, LPCTSTR prompt, LPCTSTR title, LPTSTR buffer, INT buflength);
und die datei die hier gepostet ist habe ich inputbox.cpp genannt.
dann habe ich das hier versucht:
C/C++ Code:
int i = InputBox(hInstance, hWnd, "Eingabe in diesem Feld:", "Titel", sDummy, 256);
if(i==IDOK)
{ MessageBox(NULL, sDummy, "Text", MB_OK); }
C/C++ Code:
int i = InputBox(hInstance, hWnd, "Eingabe in diesem Feld:", "Titel", sDummy, 256);
if(i==IDOK)
{ MessageBox(NULL, sDummy, "Text", MB_OK); }
C/C++ Code:
int i = InputBox(hInstance, hWnd, "Eingabe in diesem Feld:", "Titel", sDummy, 256);
if(i==IDOK)
{ MessageBox(NULL, sDummy, "Text", MB_OK); }
bei den ersten beiden parametern habe ich mein problem,
NULL kann ich nicht bei beiden nehmen, das weiß ich jetzt auch schon,
aber wenn ich
hInstanc2 als HINSTANCE
und
hWn2 als HWND
deklariere, dann kommt diese meldung:
Original erstellt von Netspider:
und die datei die hier gepostet ist habe ich inputbox.cpp genannt.
habe ich ja, zumindest gespeichert, ich dachte es reicht wenn ich die InputBox.h include, aber ok!
muss ich die ersten 2 parameter eigentlich ändern oder geht das so wie es im beispiel von webfritzi geschrieben ist?
@cd9000
JETZT ist der Code hoffentlich in Ordnung, und ich wäre dankbar dafür, wenn du das in die FAQ stellen würdest. Dann kann ich mir wenigstens immer wieder die Früchte meiner Anstrengung anschauen.
@Netspider
Den ersten Parameter habe ich in der neuen Fassung herausgenommen. Der war eh überflüssig, weil man in DialogBoxIndirectParam() auch NULL im ersten Parameter stehen haben kann, wenn man die DLGTEMPLATE nicht gerade aus einer Resource geladen hat. Du solltest jetzt keine Probleme mehr damit haben. Tipp einfach das Beispiel in meinem langen Beitrag ab.
_________________ Riskiere doch mal einen Blick auf www.WebFritzi.de.vu
FROM: doofie (192.255.2.88); TO: WebFritzi (212.128.130.6)
hi, i'm a signature virus. copy me into your signature to help me spread.
ich habe #include "InputBox.h" gemacht, die neue version von deiner cpp-datei in die InputBox.cpp geschrieben und die InputBox.h mit deinem text geschrieben.
dann habe ich die funktion so aufgerufen:
C/C++ Code:
int i = InputBox(hWnd, "Eingabe in diesem Feld:", "Titel", sDummy, 256);
if(i==IDOK)
{ MessageBox(NULL, sDummy, "Text", MB_OK); }
C/C++ Code:
int i = InputBox(hWnd, "Eingabe in diesem Feld:", "Titel", sDummy, 256);
if(i==IDOK)
{ MessageBox(NULL, sDummy, "Text", MB_OK); }
C/C++ Code:
int i = InputBox(hWnd, "Eingabe in diesem Feld:", "Titel", sDummy, 256);
if(i==IDOK)
{ MessageBox(NULL, sDummy, "Text", MB_OK); }
was ist denn daran falsch, muss ich ein frisches "hWnd" benutzen, das hier ist das von meinem fenster, das erstellt wurde.
- ich kenn mich mit win-cpp eben nicht so aus -
Danke für eure hilfe, wenn mir noch jemand dabei helfen kann, den error auszuradieren, dann bin ich richtig glücklich!
Du musst natürlich die cpp-Datei zu deinem Projekt hinzufügen (Im VC++: Projekt->Dem Projekt hinzufügen...).
_________________ Riskiere doch mal einen Blick auf www.WebFritzi.de.vu
FROM: doofie (192.255.2.88); TO: WebFritzi (212.128.130.6)
hi, i'm a signature virus. copy me into your signature to help me spread.
Nächstes Thema anzeigen Vorheriges Thema anzeigen
Sie können keine Beiträge in dieses Forum schreiben. Sie können auf Beiträge in diesem Forum nicht antworten. Sie können Ihre Beiträge in diesem Forum nicht bearbeiten. Sie können Ihre Beiträge in diesem Forum nicht löschen. Sie können an Umfragen in diesem Forum nicht mitmachen.
c++.de ist Teilnehmer des Partnerprogramms von Amazon Europe S.à.r.l. und Partner des Werbeprogramms, das zur Bereitstellung eines Mediums
für Websites konzipiert wurde, mittels dessen durch die Platzierung von Werbeanzeigen und Links zu amazon.de
Werbekostenerstattung verdient werden kann.
Die Vervielfältigung der auf den Seiten www.c-plusplus.de, www.c-plusplus.info, www.c-sar.de, www.c-plusplus.net und www.baeckmann.de
enthaltenen Informationen ohne eine schriftliche Genehmigung des Seitenbetreibers ist untersagt
(vgl. §4 Urheberrechtsgesetz). Die Nutzung und Änderung der vorgestellten Strukturen und Verfahren in
privaten und kommerziellen Softwareanwendungen ist ausdrücklich erlaubt, soweit keine Rechte Dritter verletzt werden.
Der Seitenbetreiber übernimmt keine Gewähr für die Funktion einzelner Beiträge oder Programmfragmente, insbesondere
übernimmt er keine Haftung für eventuelle aus dem Gebrauch entstehenden Folgeschäden.