Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
pominub
0 / 0 / 0
Регистрация: 17.11.2010
Сообщений: 30
#1

Общение между диалогами - C++

17.01.2011, 08:47. Просмотров 1032. Ответов 8
Метки нет (Все метки)

Здравствуйте. У меня такая ситуация:
Имеется диалог: скажем CmyDlg. На нём к примеру две вкладки:
CPage1 и CPage2. На CPage1 находится EditBox (переменная m_Edit)и кнопка (скажем BUTTON1),
на CPage2 находится ListCtrl (переменная m_List). Проблема следующая: Добустим я хочу ввести ввести в EditBox какой-то текст и чтобы после
нажатия на кнопку на второй закладке (в ListCtrl) этот текст появился как строка. Как это можно организовать?
Заранее спасибо за ответы......
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.01.2011, 08:47
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Общение между диалогами (C++):

Общение с com-портом - C++
Здравствуйте. Мне нужно передавать и принимать информацию через компорт. Как это делалось в Win98, я знаю, делал программу. Нужно это...

Общение двух exe - C++
Доброго времени суток! Я столкнулся с проблемой "общения" двух exe. Не знаю в какую сторону рыть. Нужно подтверждение коннекта, передача...

Общение игрострой TCP/UDP - C++
Привет всем! Как написать чат, сериализовывать и десериализовывать я знаю. Передавать файлы по FTP. Тоже НЕ могу понять что передавать...

Задача по физике (Определить силу притяжения между телами массы m1 и m2, расстояние между которыми r) - C++
Определить силу притяжения между телами массы m1 и m2, расстояние между которыми r, по формуле F = (m1 + m2) / r2

Убрать в текстовом файле ненужные пробелы, оставив между словами по одному, между предложениями по два. - C++
Мое задание: убрать в текстовом файле ненужные пробелы, оставив между словами по одному, между предложениями по два. Вот программа...

Задача на рекурсию. Найти кратчайшее расстояние между городами i и j даже если между ними нет прямой дороги - C++
Дана матрица размером NxN с расстояниями между городами при наличии прямой дороги между ними. По вертикали содержаться города откуда...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
potekhin
1 / 1 / 1
Регистрация: 14.10.2009
Сообщений: 100
18.01.2011, 06:26 #2
Как ты вкладки делаешь(код вставь)?
0
mifody
0 / 0 / 0
Регистрация: 16.05.2009
Сообщений: 26
18.01.2011, 12:15 #3
Привет.

Вобщем само клево это сделать так.
У тя есть диалог MyDialog на нем CTabCtrl пусть будет m_tab.
Ты создаешь еще два класса на основе шаблона диалога, MyD1ublic CMySheet и MyD2ublic CMySheet, где CMySheetublic CDialog с соответствующими стлями.
В этом деле самое главное это OnSize прально перегрузить, что бы красиво было.
И вот, при переключении вкладок (событие есть такое), ты просто один диалог скрываешь, а другой показываешь. На первом например у тебя ЕдитБокс и Баттом, m_strEdit, m_wndBut. На втором Лист m_list, ну и заведи себе массив или список m_arToList в классе CMySheet.
Ну и вот, на клик либо добаляешь, либо переписываешь m_arToList.
А на InitDialog или ShowDialog, заполняешь m_List элементами из массивы или списка, как тебе будет удобно, но если много данных то список лучше использовать.

Ну вот и все вроде. Удачи.
0
pominub
0 / 0 / 0
Регистрация: 17.11.2010
Сообщений: 30
19.01.2011, 01:47  [ТС] #4
Вот код для вкладок:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
  ///////Делаем вкладки//////////////////
BOOL CmyDlg::OnInitDialog()
{
    
    CDialog::OnInitDialog();
TC_ITEM tci; 
 
    tci.mask = TCIF_TEXT;
    tci.iImage = -1; 
    tci.pszText = 'Вкладка 1';
 
    m_Tabs.InsertItem(0, &tci); 
    tci.pszText = 'Вкладка 2'; 
    m_Tabs.InsertItem(1, &tci);
 
    tci.mask = TCIF_PARAM;
    tci.lParam = (LPARAM)Page1;
    m_Tabs.SetItem(0, &tci);
 
    Page1->Create(CTabPage1::IDD, &m_Tabs);
    Page1->SetWindowPos(NULL, 10, 22, 0, 0, SWP_NOSIZE | SWP_NOZORDER);
    Page1->ShowWindow(SW_SHOW);
 
    tci.mask = TCIF_PARAM;
    tci.lParam = (LPARAM)Page2;
    m_Tabs.SetItem(1, &tci);
 
    Page2->Create(CTabPage2::IDD, &m_Tabs);
    Page2->SetWindowPos(NULL, 10, 22, 0, 0, SWP_NOSIZE | SWP_NOZORDER);
    Page2->ShowWindow(SW_HIDE);
//////Ну и реакция на выбор одной из вкладок///////
 
void CTestTabDlg::OnSelchangeTab1(NMHDR* pNMHDR, LRESULT* pResult) 
{
    // TODO: Add your control notification handler code here
    int iTab = m_Tabs.GetCurSel();
    TC_ITEM tci;
    tci.mask = TCIF_PARAM;
    m_Tabs.GetItem(iTab, &tci);
    CWnd* pWnd = (CWnd *)tci.lParam;
    pWnd->ShowWindow(SW_SHOW); 
 
    *pResult = 0;
}
 
void CTestTabDlg::OnSelchangingTab1(NMHDR* pNMHDR, LRESULT* pResult) 
{
    // TODO: Add your control notification handler code here
    int iTab = m_Tabs.GetCurSel();
    TC_ITEM tci;
    tci.mask = TCIF_PARAM;
    m_Tabs.GetItem(iTab, &tci);
    CWnd* pWnd = (CWnd *)tci.lParam;
    pWnd->ShowWindow(SW_HIDE);
0
man_of_ring
4 / 4 / 0
Регистрация: 09.12.2010
Сообщений: 278
19.01.2011, 16:51 #5
вот вы ребята поизвращаться...
в Билдере это делаеть 2 строками кода.
.....
0
boombastik
7 / 7 / 0
Регистрация: 13.02.2007
Сообщений: 1,255
25.01.2011, 00:26 #6
[2 man_of_ring]
не стоит ругать/судить о том, с чем не знаком.

[2 pominub]
Ты что там наворотил? У меня код вкладок выглядит:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
...
CAppOptionsGeneralPropPage generalPropPage;
CAppOptionsVoicePropPage voicePropPage;
CAppOptionsLngPropPage lngPropPage;
 
CPropertySheet propSheet;
propSheet.SetTitle(_T('Options'));
 
propSheet.AddPage(&generalPropPage);
propSheet.AddPage(&voicePropPage);
propSheet.AddPage(&lngPropPage);
 
if (propSheet.DoModal() == IDOK)
{
    // Выполняем действия по сохранению свойств.
}
...
Классы CAppOptionsGeneralPropPage, CAppOptionsVoicePropPage и CAppOptionsLngPropPage являются наследниками класса CPropertyPage в них же и реализуется обработка событий.

Если нужен обмен данными между страницами, то реализуй наследника от CPropertySheet и используй его для обмена данными. Для того чтобы до него добраться можно использовать метод GetParent. Например:
C++
1
2
3
4
5
6
...
CMyPropertySheet* pOptionsDialog = (CMyPropertySheet*)GetParent();
 
pOptionsDialog->SetLabelText(_T('new text'));
pOptionsDialog->ПридумайСам(что-нибудь);
...
Удачи, Владимир
0
pominub
0 / 0 / 0
Регистрация: 17.11.2010
Сообщений: 30
25.01.2011, 17:18  [ТС] #7
Спасибо. Я просто вкладки немного по-другому делал.
Тока я не совсем пока подрубаю что там к чему. Ты не мог бы выслать мне какой-нибудь твой исходник с вкладками(damage2@yandex.ru).
Буду очень благодарен.
Андрей.
0
boombastik
7 / 7 / 0
Регистрация: 13.02.2007
Сообщений: 1,255
26.01.2011, 00:06 #8
Извини, сегодня нет времени, если у тебя не горит, завтра набросаю небольшой пример и вышлю.
0
pominub
0 / 0 / 0
Регистрация: 17.11.2010
Сообщений: 30
26.01.2011, 02:23  [ТС] #9
Хорошо. Спасибо.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.01.2011, 02:23
Привет! Вот еще темы с ответами:

Передачи строки между диалогами - C#
Здравствуйте, можете подсказать как получить строку из дополнительного диалога в основной диалог? //Form 1 using System; using...

Передача данных между родительским и дочерним диалогами - C++ WinAPI
Здравствуйте. У меня в качестве главного окна приложения используется диалоговое окно. В определенный момент из него вызывается еще...

Общение между формами? - C#
Здравствуйте. Возможно глупый вопрос. Попытаюсь вкратце: Есть форма с кнопкой. По нажатии на кнопку нужно создать два объекта...

Общение между программами - Pascal
Пусть есть некоторая программа, хранящая в себе алгоритм преобразования входных данных в выходные, и программа-потребитель, которая на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
26.01.2011, 02:23
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru