информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Spanning Tree Protocol: недокументированное применениеСтрашный баг в WindowsВсе любят мед
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Бэкдор в xz/liblzma, предназначенный... 
 Три миллиона электронных замков... 
 Doom на газонокосилках 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
все доски
FAQ
IRC
новые сообщения
site updates
guestbook
beginners
sysadmin
programming
operating systems
theory
web building
software
hardware
networking
law
hacking
gadgets
job
dnet
humor
miscellaneous
scrap
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
[C++] Дополнения к дополнению 25.07.03 04:09  Число просмотров: 1426
Автор: void <Grebnev Valery> Статус: Elderman
<"чистая" ссылка>
amirul,
Извини, что не ответил сразу. Думал... В сомнениях я теперь.

*************************************
>>Я собственно не о создании….. для разных диалогов в CWinApp (вернее его наследника, который создается Class Wizard-ом). Насколько я понял сделать это из самого Class Wizard-а тоже не получится, так как диалоги создаются/уничтожаются опять таки в run-time, а design-time-е не известно, будет ли валидна данная переменная. Поэтому указатели на диалоги можно поместить в этого самого наследника от CWinApp вручную, и выставлять их по мере создания/удаления диалогов (так как конструкторы/деструкторы диалогов видят глобальный theApp, то оттуда лучше всего это и делать - кому как не им знать когда создаются/уничтожаются диалоги). Основной диалог приложения создается в InitInstance как локальная перменная и потому уничтожается при выходе из области видимости (из InitInstance).

A:
Собственно я так и делаю. В «главном» диалоге формы в качестве членов – указатели на все 20 диалогов пейджей. Если честно, то я сразу не дотукал, что сообщение, или функцию «Read» можно передать только «главному» диалогу, с тем, чтобы он разослал его своим детям, диалогам пейджей. А те уж сами знают, что делать по «Read»

************************************
>Ну а с известными указателями на диалоги уже можно из любого диалога получить доступ к любому элементу каждого диалога. Причем добавлять переменные в ClassWizard нужно ПОМИМО добавления элемента в диалог. Добавляется не сам объект так сказать, а указатель на него для последующего доступа. Причем, можно выбирать каким элементам нужны такие переменные, а какие будут на автопилоте управляться собственными событиями.

A:
Ты прав, за одним исключением. Я не собираюсь «…из любого диалога получить доступ к любому элементу каждого диалога…». Тем более, что они не должны быть паблик (контролы). Этот изврат был в начале топика, для «затравки».


************************************
>>Вообще я имел в виду, что данным нужно давать всплывать только до того места, откуда они >>будут видны всем желающим их видеть. Но не дальше. Максимум, куда можно дать всплыть >>этим данным - в мемберы CWinApp-а….

A:
Может и в качестве членов CWinApp-а. Если они будут приват, то единственное, что можно, сделать – это сделать вызов CMyApp::Read(), а тот уже расскажет своему приватному добру последовательно:

bool CMyApp::Read()
{
pTreeView->Read();
pMainDialog->Read(); // Этот щас в цикле сделает вызов для диалогов пейжей


}

А может при криэйте этих объектов их добавлять в некий класс, для которого обеспечена глобальная видимость для всех заинтересованных окошек. Кстати интересно, а как сделать так, чтобы доступ к паблик методам такого класса имели-бы только его подписчики, т.е. те, кто уже зарегистрирован при создании (указатель на этот объект)?

**************************************
>> Но даже если будут отличия - выводить переменные в global scope нужно очень осторожно.

A:
Надеюсь, ты понимаешь, что я не собираюсь делать в global scope НЕПОСРЕДСТВЕННО указателей на CWnd-объекты интерфейса.

**************************************
>>… А точный тип знать не обязательно, если в базовом классе хорошо задан интерфейс.

A:
Согласен. Но балбесянство CtabCtrl MFC выводит, т.к. классу каждой пейжи надо объяснять в переопределённой функции интерфейса базового класса, как надо обрабатывать «ЕнаблеКонтролс». В BCB++ c таб-компонентом проще. Из облати его видимости можно получить доступ ко всем контролам на каждой закладке, т.е. обабатывать поведение контролов по «ЕнаблеКонтролс» в одном методе, а не в 20-и.
<programming> Поиск 






Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2024 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach