Вопрос № 115954: Здравствуйте!
У меня несколько вопросов по MFC. Подскажите, как можно обмениватся данными между классами диалогов?
Например создаю я проект, dialog based, в котором по умолчанию два класса, CMyApp и CMyDlg, добавляю ещё один диалог, для котор...Вопрос № 115989: Уважаемые эксперты! Помогите решить такую задачу:
Определить класс стека действительных чисел как массив, число элементов которого определяется конструктором. Запись в стек и чтение из стека осуществляется с помощью постфиксных операций ++ и...Вопрос № 116009: будьте добры приведите пример
программы которая не видна в списке
процессов (CTL-ALT-DEL)...
Вопрос № 115.954
Здравствуйте!
У меня несколько вопросов по MFC. Подскажите, как можно обмениватся данными между классами диалогов?
Например создаю я проект, dialog based, в котором по умолчанию два класса, CMyApp и CMyDlg, добавляю ещё один диалог, для которого создается класс CMyDlg2.
1) Как из CMyDlg изменить переменные находящиеся в CMyDlg2?
2) Как из CMyDlg например изменить текст в EditBox, находящемся на форме класса CMyDlg2?
3) При отображении формы через метод DoModal предыдущая блокируется, как сделать чтобы не блокировалась?
Отвечает: Арефьев Сергей
Здравствуйте, Вячеслав Шинкаренко!
1. Например, так:
<некая функция-член класса CMyDlg>
...
MyDlg2.m_iSomeVariable = 10;
...
То есть, обращаемся к переменной m_iSomeVariable, члену класса CMyDlg2. При этом эта переменная должна быть доступна вне своего класса, что проще всего сделать обьявив ее public.
Но использовать данный подход не рекомендую. Правильным было бы написать функцию-член класса CMyDlg2, которая занималась тем, что изменяла бы переменные-члены этого класса сама, присваивая им необходимые значения.
И вызвать ее там, где необходимо (хоть из другого класса, хоть в самом CMyDlg2.
2. Аналогично п.1 сразу отбрасываем вариант прямой манипуляции данными другого диалога и создаем подобную функцию (если у вас с EditBox'ом связана текстовая переменная):
или такую функцию (если у вас с EditBox'ом связана переменная типа CEdit):
void CMyDlg2::SetEditText(CString strText)
{
m_EditWnd.SetWindowText(strText);
}
И вызывать эту функцию потом из любого нужного места программы.
3. Предыдущий диалог блокируется потому что при создании второго диалога Вы пользуетесь функцией DoModal. При этом диалог создается модальным (как следует из названия функции), т.е. пока он не будет закрыт, предыдущий диалог не будет доступен.
Вам нужно создать диалог немодальным. Например, так:
Ответ отправил: Арефьев Сергей (статус: 1-ый класс)
Ответ отправлен: 25.12.2007, 22:50 Оценка за ответ: 5 Комментарий оценки: Всё, понятно. Спасибо!
Вопрос № 115.989
Уважаемые эксперты! Помогите решить такую задачу:
Определить класс стека действительных чисел как массив, число элементов которого определяется конструктором. Запись в стек и чтение из стека осуществляется с помощью постфиксных операций ++ и --. Аргументом конструктора может быть массив
Отвечает: Терсков Сергей
Здравствуйте, Сергеев Александр! В приложении класс параметризованного стека (сильно упрощенная реализация). Хотя конечно реализация чтения/записи через такие операторы выглядит крайне нелогично. Уж лучше традиционные push/pop.
Приложение:
Ответ отправил: Терсков Сергей (статус: Практикант)
Ответ отправлен: 26.12.2007, 03:15
Отвечает: Ross
Здравствуйте, Сергеев Александр!
Класс стека и пример его использования в приложении.
Приложение:
--------- Доступно только то, что видимо (c) Б. Керниган
Ответ отправил: Ross (статус: Студент)
Ответ отправлен: 26.12.2007, 03:34
Вопрос № 116.009
будьте добры приведите пример
программы которая не видна в списке
процессов (CTL-ALT-DEL)
Отправлен: 26.12.2007, 10:06
Вопрос задал: Vadim Z (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Mitya86
Здравствуйте, Vadim Z!
Для windows 9x подойдет код из приложения, а для других виндоусов будет уже сложнее, посмотри здесь http://bugtraq.ru/library/programming/invisible.html, тут подробно разбирается эта тема с примером кода.
Приложение:
Ответ отправил: Mitya86 (статус: 3-ий класс)
Ответ отправлен: 26.12.2007, 12:47 Оценка за ответ: 4 Комментарий оценки: RegisterServiceProcess не работает под XP нужен рабочий пример под XP