Toon posts:

[MFC] n00b topic

Pagina: 1
Acties:

Verwijderd

Topicstarter
Niet aub gelijk gaan zeggen dat ik de search moet gebruiken of een boek moet kopen ofzo, want op internet kon ik he tniet echt vinden hoe ik het zou moeten doen

Ik heb dus best wel redelijk wat verstand van C++, dus ik begon me deze week eens te wagen aan MFC. Nu heb ik een edit veld gemaakt in een dialog en daarop zit een knop en een static tekst waar de uitkomst in moet komen. Als je op de knop drukt wordt van de waarde die in het edit veld zit gekeken of het een priemgetal is en de uitkomst wordt dan in de static tekst veld geplaatst (Dus antwoord Ja of antwoord Nee)

Ik heb dus bij dat edit veld een variabele aangemaakt van het type long, maar bij die static tekst kan ik geen variabele aanmaken. Hoe krijg ik nu dan die uitkomst in die static tekst geplaatst?

Pleaz geen slotje

Verwijderd

static, het woordt zegt het al :)

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Bedenk dan iig nog wel een betere topictitel want dit is niks...

En is er niet een of andere "setText" methode?

Verwijderd

Topicstarter
Op vrijdag 14 december 2001 22:05 schreef fladder het volgende:
static, het woordt zegt het al :)
Mar kan je niet gewoon de Caption van dat label veranderen?

Verwijderd

mocht je de class wizard gebruiken, dan moet je een member variabele aanmaken voor die CStatic. Zorg ervoor dat het ding niet IDC_STATIC heet, maar geef het een andere ID. Als je de member variabele hebt aangemaakt, kun je met SetWindowText de text van de CStatic aanpassen.

Mocht je niet gebruik willen maken van de class wizard, dan kun je op een andere manier de CStatic benaderen. De ID moet dan wel ff aangepast worden, noem hem bijvoorbeeld IDC_MY_TEXT

maak een member variabele in de header file van de vensterklasse of dialoogvenster klasse, bijv. CStatic *m_pMyText;

In OnInitDialog(), doe het volgende:

m_pMyText = (CStatic*)GetDlgItem( IDC_MY_TEXT);

vervolgens kunje elders n de code het volgende doen:

m_pMyText->SetWindowTExt("wat voor tekst dan ook");

succes

  • Wokker
  • Registratie: September 2001
  • Laatst online: 06:17

Wokker

De avond wokkel

Ik zou een boek kopen :P

Het oneindige X 0


Verwijderd

Op vrijdag 14 december 2001 22:25 schreef Wokker het volgende:
Ik zou een boek kopen :P
zekers, en gebruik maken van de nieuwsgroep: microsoft.public.vc.mfc

die zullen je ook aanraden een boek te kopen, maar men kan je daar ook verwijzen naar handige sites.

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 23:17

.oisyn

Moderator Devschuur®

Demotivational Speaker

merk ook op dat een long maken van een textfield gewoon totaal geen zin heeft, aangezien die variabele pas wordt geinitialiseerd als je de dialog sluit. Als je tijdens het tonen van de dialog met de textfield wil werken dan moet je er een object variabele van maken, CEdit * dus in jouw geval

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

Op vrijdag 14 december 2001 22:36 schreef OiSyN het volgende:
Als je tijdens het tonen van de dialog met de textfield wil werken dan moet je er een object variabele van maken, CEdit * dus in jouw geval
..of je kunt GetDlgItemInt(...) gebruiken. Kijk in de Help omtrent wat deze functie doet, maar het zal er wel zo uitzien:

int value = (int)GetDlgItemInt ( IDC_EDIT1 ); //of een andere ID voor je CEdit Control

(De reden van het casten vind je in de Help file van Visual Studio.)

Verwijderd

Topicstarter
Thank You All !!!!!
Het werkt :)

  • whoami
  • Registratie: December 2000
  • Nu online
Je kan de inhoud van een static-tekstveld gewoon met de Format functie wijzigen.

Je koppelt gewoon een variable aan uw static textcontrol en dan doe je dit:
code:
1
m_static.Format("blaat");

https://fgheysels.github.io/


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 23:17

.oisyn

Moderator Devschuur®

Demotivational Speaker

ja maar dan moet de static control wel een uniek ID-nummer hebben... en aangezien static controls altijd standaard worden aangemaakt met IDC_STATIC (of iets wat daar op lijkt :)) gaat het dus alleen werken als je maar 1 static control in je window hebt staan

dus je moet m ook even een andere ID geven :)


overigens... Format ()? Dan zou het dus een CString object moeten zijn. Werkt het dan ook? Volgens mij heeft dat dezelfde werking van als je er bijvoorbeeld een int van zou maken

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • whoami
  • Registratie: December 2000
  • Nu online
Op zaterdag 15 december 2001 17:29 schreef OiSyN het volgende:
Werkt het dan ook? Volgens mij heeft dat dezelfde werking van als je er bijvoorbeeld een int van zou maken
Wat bedoel je hier nu mee? :?

De variable die je aan de statictext control koppelt, moet inderdaad van het type CString zijn.

Wil je er een integer inkrijgen kan je dat doen mbhv
code:
1
m_JaNee.Format ("%d", Teller);

https://fgheysels.github.io/


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 23:17

.oisyn

Moderator Devschuur®

Demotivational Speaker

Op zaterdag 15 december 2001 17:45 schreef whoami het volgende:

[..]

Wat bedoel je hier nu mee? :?

De variable die je aan de statictext control koppelt, moet inderdaad van het type CString zijn.

Wil je er een integer inkrijgen kan je dat doen mbhv
code:
1
m_JaNee.Format ("%d", Teller);
ik bedoel dat als je er een int-member van maakt, dat ie die int pas initialiseerd als je de dialog sluit. En ik ging er van uit dat dat bij CString ook het geval was

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • The - DDD
  • Registratie: Januari 2000
  • Laatst online: 03-09 16:40
In Win32 zou je gewoon SetWindowText doen, geloof ik.

  • whoami
  • Registratie: December 2000
  • Nu online
Op zaterdag 15 december 2001 17:47 schreef OiSyN het volgende:

[..]

ik bedoel dat als je er een int-member van maakt, dat ie die int pas initialiseerd als je de dialog sluit. En ik ging er van uit dat dat bij CString ook het geval was
Hoezo?? ben nu helemaal niet meer mee.

https://fgheysels.github.io/


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 23:17

.oisyn

Moderator Devschuur®

Demotivational Speaker

nou okee, ik zal effe vanaf het begin beginnen :)

Stel je maakt een edit-box in je dialog, en je maakt een membervariabele van deze edit-box van het type int met de naam m_int;

Als je dan, terwijl de dialog vertoond wordt op het scherm, die m_int opvraagt, dan is dat niet wat op dat moment in de edit box staat. m_int wordt namelijk niet elke keer dat jij de edit-box wijzigt geupdate.

Hij wordt echter wel geupdate als je de dialog sluit. MFC zet dan de tekst van de edit-box om naar een integer en stopt die in m_int, zodat je programma die de dialog gebruikt voor bepaalde user-input uit kan lezen wat de user heeft ingetoetst

Hetzelfde is natuurlijk ook andersom: als je m_int assigned tijdens het tonen van de dialog dan zal de edit-box niet zomaar ineens van waarde veranderen.

Er is wel een functie voor: UpdateData ()

hier een stukje uit de MSDN over CDialog:
ClassWizard writes the exchange and validation data map in an override of CWnd::DoDataExchange that ClassWizard adds to your new dialog class. See the DoDataExchange member function in CWnd for more on the exchange and validation functionality.

Both the programmer and the framework call DoDataExchange indirectly through a call to CWnd::UpdateData.

The framework calls UpdateData when the user clicks the OK button to close a modal dialog box. (The data is not retrieved if the Cancel button is clicked.) The default implementation of OnInitDialog also calls UpdateData to set the initial values of the controls. You typically override OnInitDialog to further initialize controls. OnInitDialog is called after all the dialog controls are created and just before the dialog box is displayed.

You can call CWnd::UpdateData at any time during the execution of a modal or modeless dialog box.

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • whoami
  • Registratie: December 2000
  • Nu online
Ah zo. Ja, nu snap ik het.
Die UpdateDate functie ken ik wel, maar ik weet nu niet zo vanbuiten of je die ook nodig hebt met die Format() functie.

Ik veronderstel van wel.

/me heeft nu ook zoveel ervaring niet in Visual C++ en MFC

https://fgheysels.github.io/


Verwijderd

Op zaterdag 15 december 2001 18:43 schreef whoami het volgende:
Ah zo. Ja, nu snap ik het.
Die UpdateDate functie ken ik wel, maar ik weet nu niet zo vanbuiten of je die ook nodig hebt met die Format() functie.
Ik geloof dat degene die het topic startte UpdateData niet zal gebruiken. Hij dacht (volgens mij) aan een knop waar je op kon drukken waarna de inhoud van de edit control geevalueerd werd en er iets in de cstatic gezet werd.

Maar dat maakt niet uit, want dan passeren andere MFC zaken ook de revue. En daarom misschien nog een interessant itempje over UpdateData():
http://www.pgh.net/~newcomer/updatedata.htm

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 23:17

.oisyn

Moderator Devschuur®

Demotivational Speaker

Op zaterdag 15 december 2001 23:05 schreef noid het volgende:

[..]

En daarom misschien nog een interessant itempje over UpdateData():
http://www.pgh.net/~newcomer/updatedata.htm
kheb het net gelezen, en ik vind het een beetje een bullshit verhaal. Ze geven MS de schuld omdat ze iets volgens hun niet gedocument hebben, terwijl dat wat ze niet gedocument hebben gewoon compleet logisch is. Ze doen dus heel panisch over iets wat ze waarschijnlijk tijdens het programmeren zijn tegengekomen, en dat werkte niet omdat ze niet eerst logisch hebben nagedacht, en vervolgens geven ze MS de schuld omdat dat niet gedocument is.

Verder klopt het verhaal wel, maar de toon is een beetje verkeerd naar mijn idee. Ze hadden het beter kunnen noemen "Things to consider when using UpdateData ()" en dan een verhaaltje in die trand, en niet gelijk van "vooral niet gebruiken, MS heeft het niet goed gedaan, bla bla bla bla"

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

Op zaterdag 15 december 2001 23:29 schreef OiSyN het volgende:

Verder klopt het verhaal wel, maar de toon is een beetje verkeerd naar mijn idee. Ze hadden het beter kunnen noemen "Things to consider when using UpdateData ()" "
De site is van een man (1) die erg lang in het vak zit en een bepaalde mening heeft over programmeerzaken. Vaak komt ie wat stellig over, maar dat levert iig leuke reacties op. Ik ben het ook niet altijd eens met zijn stelligheid, maar het dwingt me wel onderzoek te plegen naar bepaalde beweringen van hem.

Misschien had je het al gelezen, maar hij is wel Microsoft MVP :). Kennelijk kunnen ze hem wel waarderen.
Pagina: 1