» »

Visual Studio C++ MessageBox izpis večih spremenljivk

Visual Studio C++ MessageBox izpis večih spremenljivk

spinner ::

Lep pozdrav!

Malce sem začel programirati v Visual Studio C++ 2003 in me zanima, kako v MessageBox classu izpisat več spremenljivk?
Recimo vsako spremenljivko v svojo vrstico. Poizkušal sem že vse mogoče načine in niti en ni pomagal. Mi lahko vi pomagate?

hvala in lep pozdrav še enkrat

iztok04 ::

Ponavadi deluje, če med "spremenljivkami" za katere želiš, da so vsaka v svoji vrstici, vrineš \r\n.
Primer:
MessageBox(NULL, "Prva vrstica\r\nNova Vrstica\r\nSe ena nova vrstica", "Test", MB_OK);

spinner ::

UpdateData(TRUE);
MessageBox(sp1 \r\n sp2);
UpdateData(FALSE);

evo imam tko, probal pa sem tudi s tvojim primerom, pa ni delovalo :S
že se trudim 2 dni da pogruntam pa kr ne gre... a še ma kdo kašno pomoč?

hvala in lp

Utk ::

A se tako stringe združuje? Ti ti. "\r\n" je string.

spinner ::

hm.. se pravi
spremenljivka "\r\n" spremenljivka2,
to bo to? bom poizkusil pa poročam.

EDIT: Sem probal tako:
MessageBox(sp1 "\r\n"sp2, "Test");
Pa mi ne deluje. :( Napaka v sintaxi baje.

c:\Documents and Settings\Administrator\My Documents\Visual Studio Projects\messagebox\messageboxDlg.cpp(161): error C2143: syntax error : missing ')' before 'string'

c:\Documents and Settings\Administrator\My Documents\Visual Studio Projects\messagebox\messageboxDlg.cpp(161): error C2059: syntax error : ')'

To sta dva errorja. Prav v tej vrstici z message box.

Zgodovina sprememb…

  • spremenil: spinner ()

BlueRunner ::

Vzemi v roke učbenik o programiranju v C/C++. To, kar počeneš, je prva ura uvodnega tečaja programiranja v tem jeziku za popolne začetnike.

Glede na to, da verjetno uporabljaš MFC, si poglej razred CString. Če tega ne uporabljaš, si poglej bodisi razred std::string, bodisi funkcije iz družin strXXXXX in sprintf.

iztok04 ::

sp1 "\r\n" sp2 je napačno. Stringe moraš konkatenirati (združiti):
sp1 + "\r\n" + s2

spinner ::

Nimam učbenika. Niti kakšnega pdfja. Pa ne splača se mi ka nabavljat, za to eno samo funkcijo. Vem da jih je tam veliko več opisanih ampak me trenutno zanima samo to in nič drugega.

iztok04 niti to ne dela ;)
MessageBox(sp1 + "\r\n" + sp2); //seveda ne javi errorjev ampak v msg boxu ne izpiše nič.

iztok04 ::

Kakšnega tipa pa sta sp1 in sp2?

spinner ::

CString

Ktj ::

Probaj z memcpy skoperati vse v eno spremenljivko nato pa to izpišvi v msgbox.

spinner ::

Ja sej to je možno. To vem. Ampak nevem za več spremenljivk.

Mi je sošolec rekel, da se nek format naredi. Mislim da je nek class (nekaspremenljivka.Format(potem v oklepaju napišeš nekaj spremenljivk); in nato msgbox(nekaspremenljivka);... pač na hitro napisano

bom ga podrobneje vprašal, pa vam povem, če ne bo še rešitve.

lp

iztok04 ::

Sledeč primer sem našel na MSDN-ju:

Concatenating Two CString Objects
To concatenate two CString objects, use the concatenation operators (+ or +=) as follows:
Visual C++

CString s1 = _T("This "); // Cascading concatenation
s1 += _T("is a ");
CString s2 = _T("test");
CString message = s1 + _T("big ") + s2;
// Message contains "This is a big test".

noraguta ::

\n je control kode za novo vrstico(mfc,win32) v msgboxu.
Pust' ot pobyedy k pobyedye vyedyot!

spinner ::

Ja glejte \n je za tocno dolocene stringe kot je "string\ndruga vrstica"
to ne moreš uporabit v spremenljivkah.

iztok kako bi pa s tem izpisal recimo:
"String:" spremenljivka
"Int:" spremenljivka2
"double:" Spremenljivka3

BlueRunner ::

OK, saj verjetno brez veze, da ti še enkrat ponavaljam, da pojdi prebrati kakršno koli dokumentacijo za začetnike. To kar sprašuješ je prva ura uvodnega tečaja za vse tiste, ki niso še nikoli programirali v C/C++.

#include <stdio.h>
#include <tchar.h>
#include <windows.h>

int _tmain(int argc, _TCHAR* argv[])
{
	int var1 = 1000;
	double var2 = 0.55462;
	TCHAR *var3 = _T("txttxttxt");

	TCHAR buffer[STR_BUFFER + 1];
	int chars;

	chars = ::_sntprintf(buffer, STR_BUFFER, _T("%d\n%f\n%s"), var1, var2, var3);
	if (chars >= STR_BUFFER) buffer[STR_BUFFER] = '\0';

	::MessageBox(NULL, buffer, _T("MessageBox"), MB_OK | MB_ICONHAND);

	return 0;
}

Zgodovina sprememb…

spinner ::

Res mi brez veze razlagaš, da naj preberem dokumentacijo za tiste, ki še niso programirali v C++. Programiram že 2 leti (v šoli) v jeziku C++ in moram rečt da se motiš, ker so prve ure večina na izpisih in deklariranju spremenljivk :)

Drugače pa je to bolj kompliciranje zgoraj.
Poglej kako mi je napisal sošolec:

CString Izpis;
Izpis.Format("Cena: %.2f\nNacin placila: %s\nDodatni popust: %.2f", Cena, NacinPlacila, DodatniPopust);
MessageBox(Izpis,"Cena vezave");

Nisem pa vedel, da je Izpis v tem primeru s podatkovnim tipom CString deklariran kot class.
Drugače pa hvala za vso pomoč. Mislim da je tale primer še dokaj enostaven za uporabljanje MessageBoxa za izpis več spremenljivk hkrati.

lp

klemen18 ::

if (MessageBox.Show("Ali ste prepričani, da želite zapustiti program?"+
"\nPritisni željen gumb!", "IZHOD",
MessageBoxButtons.YesNo) == DialogResult.Yes) Application.Exit();

To je primer kako zapišeš karkoli v več vrstic DELUJE, saj imam jaz tako narejen.
v MessageBox.Show imaš tudi dva gumba DA in NE.
Da v MessageBoxu začneš v novi vrstici moreš napisat \n

Če ti bo kej prov pršlo.
LP.

spinner ::

Ja sej to ni problem ker so stringi :P
Drugače pa pride prav ja.

hvala


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

[c#] try/catch, v katerem gradniku je napaka

Oddelek: Programiranje
101018 (756) japol
»

C# problem z kopiranjem

Oddelek: Programiranje
91055 (849) 3p
»

[C#] prikazovanje int spremenljivk v sporočilnem oknu

Oddelek: Programiranje
111236 (946) darkolord
»

win api (c++)

Oddelek: Programiranje
462535 (1815) Gundolf
»

Win32 API in C++

Oddelek: Programiranje
131556 (1427) Monster

Več podobnih tem