Hvis du ikke har genereret en klasse for din settings dialog, er det det første du skal gøre. Det kan du fx gøre ved at dobbeltklikke på dialogen i resource-editoren og udfylde et par felter...
hehe nu begynder det at ligne noget...... kan få dialogen frem og det hele men jeg har lidt problemer med at få fat i dens variabel :( det ser dog ud til at jeg godt kan få fat i objekter ved at gøre sådan dlg.GetDlgItemText(IDC_static1, test); det giver ikke gogen compile error men når jeg køre programmet og kommer til det sted craser den :( det ville nu også være nemmest hvis jeg kunne få værdien af den nye (file_ext) dialogs globale variabel så jeg kan bruge den i main dialogen.
1) dlg.GetDlgItemText(IDC_static1, test); er IKKE nogen pæn måde at gøre det på og kan i øvrigt slet ikke lade sig gøre i dette tilfælde. Når du når til koden, findes dialogens kontroller jo ikke længere... 2) Dialogen skal ikke have værdierne som globale variable, men som public members (hvis du vil tilgå dem direkte).
Du kan oprette en membervariable for en kontrol sådan:
1) Dobbeeltklik på kontrollen (fx en editbox) 2) I dialogen der kommer frem, giv den et navn (fx m_strName hvis den indeholder et navn) 3) Vælg at det skal være "Value" (ikke control) og af typen CString (hvis det er tekst)
Du vil så kunne henvise til variablen før og efter således:
jeg er ikke helt sikker på hvad det med Value er..... når jeg dobbelklikker på en editbox for jeg kun mulighedden for at skrive et navn som den selv foreslår skal være OnChangeEdit2. har dog lige et spørgsmål til hvordan nye dialoger virker... når man klikker på ok og afslutter den, forsvider alle dens oplysninger og variabler så? ligesom når man kommer til enden af en funktion.
sorry jeg først skriver tilbage nu (fik lige pludselig travlt) jeg har prøvet at læse lidt op på det du var ved at forklare mig med at tilføje en member variabler. yup fik det til at virke ^_^ er det kun objekter som text boxes der kan laves til en member eller kan man gøre det samme med variabler i den nye dialog?. orv mens vi er ved det, jeg syndtes ikke at kunne finde en startup routine (som OnInitDialog()) i den nye dialog :( hvad gør man der?
Jeg forstår ikke dit spm. med "kan man gøre det samme med variabler i den nye dialog?".
Ang. OnInitDialog, så skal du selv tilføje den i VC++ 6 (som jeg går ud fra du bruger?). 1) Højreklik et sted i koden til dialogen og vælg ClassWizard 2) Find det faneblad hvor du kan vælge at tilføje en handler for en message 3) Find WM_INITDIALOG i listen og dobbeltklik
når jeg går ind i class wizarden er der et faneblad der heder Message Maps drunder er der en liste af objekts IDs hvor id'en til den nye dialog er i. når jeg vælger den er der en liste ved siden af der hedder messages hvor der er en hel del af dem der starter med WM_ men jeg kunne ike rigtig finde WM_INITDIALOG jeg fandt dog en der hedder WM_CREATE, det er vel ikke den?
hmmmm kan bare ikke finde den :/ men vi er vist også ved at være langt ud over det oprindelige spørgsmål, så du for lige dine velfortjænte point ^_^
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.