Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno C++ nastavení hodnoty ve třídě

Už opravdu nevím.
Možná nějaká blbost jinak nechápu.

Uvažujme třídu showFull
ta je odvozena od wxDialog

class showFull : public wxDialog
{
	private:
		DECLARE_EVENT_TABLE();

	public:
		
		int i_sirkaOkna; // o tuto proměnnou se mi jedná
                int i_vyskaOkna; //   -||-
...
...
}




Nyní jsem v jiné funkci, jiné třídy (možná to nenazývám úplně správně).
Zjednodušeně  - v této funkci se bude volat dialog, který bude vytvořen z rodičovského okna (framu). 
A já potřebuji v tom rodičovském okně, které dialog vytváří změnit parametry (konkrétně velikost) toho dialogu co se následně zobrazí:

void hlavniOkno::StartSlideShow(wxCommandEvent& event)
{
 if(currentFile.FileExists())  // tohohle si nevšímejte
  {

  showFull dlg(this); // odvození okno od ....
    dlg.i_sirkaOkna = 1270;   // Takhle nastavím safra sirku !!!!
   dlg.i_vyskaOkna = 980;    // Takhle nastavím safra vysku !!!!

dlg.ShowModal(); // Tohle ten dialog pouze zobrazí

Problém je ovšem v tom, že překladač nehází žádnou chybu ani podobně,
ale když si uvnitř dialogu nechám vypsat hodnoty i_sirkaOkna a i_vyskaOkna :

 wxMessageBox(wxT(wxString::Format("%d",i_sirkaOkna)));
// výsledek:   
2292416
 wxMessageBox(wxT(wxString::Format("%d",i_vyskaOkna)));
// výsledek
13761136

Jednoduchá otázka:

Jsem hňup já nebo Widgets a proč ?!

Předmět Autor Datum
Kde presne mas to vypisovanie? Napada ma jedine moznost ze nejaka fcia typu "initdialog" sa zavola u…
MM.. 21.02.2007 18:43
MM..
Máš pravdu !!! dal jsem to do funkce: void showFull::CreateGUIControls() jak název napovidá je fu…
Flash_Gordon 21.02.2007 18:49
Flash_Gordon
Napady som ti napisal dve (v P.S., po uprave prispevku takze asi si ich este necital :))) Este treti…
MM.. 21.02.2007 18:51
MM..
Sakra ! No jo ! :-D Du na to..... PS: Ty PS-ka jsi tam připsal až v době kdy jsem odpovidal... poslední
Flash_Gordon 21.02.2007 18:52
Flash_Gordon

Kde presne mas to vypisovanie? Napada ma jedine moznost ze nejaka fcia typu "initdialog" sa zavola uz z konstruktora, t.j. ak si to davas vypisat v tej fcii tak je to este nenastavene.
Najlepsie pouzit debugger a uvidis to sam.

P.S. riesenie je nadefinovat si konstruktor s viac parametrami a nastavit to rovno v konstruktore, pred volanim parent konstruktora (neviem teraz zhlavy ci sa konstruktor parent triedy vola automaticky alebo ho musis zavolat v konstruktore svojej triedy, uz som OOP nejaky rok nevidel)...

P.S.2. alebo poslat oknu message na zmenu velkosti (urcite je na to fcia aj v tom widgets) a nerobit to cez premenne... (to je slusne riesenie)...

Máš pravdu !!!

dal jsem to do funkce:

void showFull::CreateGUIControls()

jak název napovidá je funkce ve které se definují prvky, které ten dialog (co se "začíná" zobrazovat) bude obsahovat.

Když to dám někam do funkce, která "běží" po vytvoření dialogu tak to fachá OK.

Jenže problém je vlastně v tom, že když potřebuji nastavit velikost toho okna tak to musím nastavovat už tady.... :-(
....

Nějaký nápad ?

Zpět do poradny Odpovědět na původní otázku Nahoru