Як дістатися з однієї форми до іншої

Як дістатися з однієї форми до іншої

ось тут і проблема з переходом на с ++
в Делфі форми практично завжди існую тобто вони існую, може бути їх не видно але вони існують.
а з ++ це не так. форма не існує поки ти її не створиш

так от якщо форма3 сущесвуют,
(Вона відкрита. Тому ти переходиш з Делфі ця фраза звучить неоднозначно)
тобто був створений об'єкт класу форми (похідний від CDialog, зазвичай в коді це виглядає так С. Dlg dlg - після цього об'єкт форми існує, але не висвітлюються), або створити покажчик на об'єкт класу (С. Dlg * dlg) і ініціалізованим першим (dlg = new С. Dlg), у форми три є змінна забезпечує досуп до цієї форми
і судячи з сказаного тобою ця змінна повинна оголошуватися в класі основної форми.
те ж саме про форму2

як ти набирає форми, для інформації

1 DoModal - особливість цього методу заключається в повній передачі управління формі
2 create і showwindow - форма працює паралельно всьому іншому.

в будь-якому випадку для твоєї завдання необхідно в класі основної форми створити два об'єкти двох інших форм. тим самим основна форма буде мати дост до решти

а з форм 2 і 3 ти можеш отримати покажчик на базове вікно
привести тип до класу основної форми
і використовуючи приведення об'єкт ти також як і в Делфі можеш провести моніпуляціі з тими формами якими хочеш? питання увидешь ти изминения чи ні. все залежить від того яким чином ти відкрив форми.

раджу тобі знайти літературку по модальним і не модальним діалогових вікон і розібратися потім розібратися з класом CWnd і його функціями


я б тобі і кодіка злегка підкинув але студії під рукою немає

зайди на www.firststeps.ru

Як дістатися з однієї форми до іншої

ось в тому то й проблема.
в Delphi вікна існують не завжди, це в настройках
проекту ти можеш сам вказати, якому вікна існувати
а якого створюватися під час роботи програми. У мене зазвичай
з 20 вікон в додатку постійно існуючими були вікна 3,
інші створювалися під час роботи програми. це зазвичай
новачки працюють з постійно існуючими вікнами. але
цікаво інше, припустимо мені треба створити текстове
вікно, не одне, а 5 або 10 не має значення, клас у вікон один,
при створенні я можу кожному з вікон встановити якийсь
ідентифікатор, припустимо лічильник номерів вікна. потім якщо з якогось
вікна програми (з іншого віконного класу), мені треба
буде звернутися до одного з цих вікон, я вже знаю клас
вікна і його ідентифікатор. І просто перебором за відкритими
вікнам, порівнюючи клас і ідентіфікатір, я міг дістатися
до покажчика вікна, що мені і треба. таким же чином я міг дістатися
до будь-якого об'єкта, що належить відомій мені формі.
цікаво як це зробити в С ++.

в Delphi і С ++ насправді дуже багато схожого.
трохи інший синтаксис, але правила побудови класів
абсолютно ідентичні. я не говорю зараз про візуальну
оболонку, де вся проблема розмістити, компоненти.
я дуже довго працював з компонентами тобто створював їх.


а при створенні компонентів немає візуальної оболонки,
все доводилося створювати в коді. дуже схоже на VC ++.

ось я і думаю, що і в С ++ повинен бути пошук по класах.
тобто якщо об'єкт існує, він створений, то його можна
знайти. спочатку знайти його батька, а потім і його.

Як це можна зробити? ось у чому питання!
а така можливість є, я в цьому впевнений.
не обов'язково так як в Delphi, головне результат.
в Delphi є масив покажчиків на всі існуючі
форми Forms, його елементи заповнюються і видаляються
автоматом, може щось подібне можна зробити самому
в С ++? і щоб цей масив був доступний віконним класах.
Що скажеш?

Як дістатися з однієї форми до іншої

тобто якщо об'єкт існує, він створений, то його можна

знайти. спочатку знайти його батька, а потім і його.

у тебе основне вікно допустимо класу С1
другий клас С2
третій С3

виклядіт це повинно так


в хеадер класу С1
public:
С2 d1; // d1- об'єкт
С3 d2;

що б дістатися з класу С2
в клас С3 за повідомленням про натискання клавіші

в функції обробки повідомлення (клас с2) про натискання необхідно внести наступне

Детальніше
GetParent () - поверне покажчик на базове вікно але вернеет його з типом CWnd і цей тип не містить таких змінних як d2 і d1
(С1 *) - робимо привиди покажчика на CWnd до покажчика на С1 тепер ми отримали покажчик на клас який містить d1 і d2
-> D2 - вибераем об'єкт з класу С1 тобто інше вікно
.SetWindowText ( "dafhg"); і застосовуємо функцію установки Капш вікна. в результаті при кликання на одне вікно Менетіл ім'я іншого.

може я погано вирожаю думки ну вообщем ніж багатому тим і раді

Схожі статті