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

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

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

Общение с com-портом C++
C++ вычислите сумму элементов, которая расположена между теми элементами,которые сами расположены между первым и последним отрицательными элементами.
C++ Убрать в текстовом файле ненужные пробелы, оставив между словами по одному, между предложениями по два.
C++ Задача на рекурсию. Найти кратчайшее расстояние между городами i и j даже если между ними нет прямой дороги
Скорость первого автомобиля V1 км/ч, второго — V2 км/ч, расстояние между ними S км. Определить расстояние между ними через T часов, если автомобили пе C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
potekhin
1 / 1 / 1
Регистрация: 14.10.2009
Сообщений: 100
18.01.2011, 06:26     Общение между диалогами #2
Как ты вкладки делаешь(код вставь)?
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 элементами из массивы или списка, как тебе будет удобно, но если много данных то список лучше использовать.

Ну вот и все вроде. Удачи.
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);
man_of_ring
4 / 4 / 0
Регистрация: 09.12.2010
Сообщений: 278
19.01.2011, 16:51     Общение между диалогами #5
вот вы ребята поизвращаться...
в Билдере это делаеть 2 строками кода.
.....
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->ПридумайСам(что-нибудь);
...
Удачи, Владимир
pominub
0 / 0 / 0
Регистрация: 17.11.2010
Сообщений: 30
25.01.2011, 17:18  [ТС]     Общение между диалогами #7
Спасибо. Я просто вкладки немного по-другому делал.
Тока я не совсем пока подрубаю что там к чему. Ты не мог бы выслать мне какой-нибудь твой исходник с вкладками(damage2@yandex.ru).
Буду очень благодарен.
Андрей.
boombastik
7 / 7 / 0
Регистрация: 13.02.2007
Сообщений: 1,255
26.01.2011, 00:06     Общение между диалогами #8
Извини, сегодня нет времени, если у тебя не горит, завтра набросаю небольшой пример и вышлю.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.01.2011, 02:23     Общение между диалогами
Еще ссылки по теме:

Задача по физике (Определить силу притяжения между телами массы m1 и m2, расстояние между которыми r) C++
Общение игрострой TCP/UDP C++
C++ Общение двух exe

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

Или воспользуйтесь поиском по форуму:
pominub
0 / 0 / 0
Регистрация: 17.11.2010
Сообщений: 30
26.01.2011, 02:23  [ТС]     Общение между диалогами #9
Хорошо. Спасибо.
Yandex
Объявления
26.01.2011, 02:23     Общение между диалогами
Ответ Создать тему
Опции темы

Текущее время: 06:37. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru