Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Visual C++/MFC/WTL > Как вернуться к предкам?


Автор: Nikkiforum 27.2.2006, 15:41
Моё приложение создаёт окно. Как из этого окна достучаться до переменных приложения?
Добавлено @ 15:51
Вообщем у моего приложения есть Tab Control:

BOOL CWinClientDlg::OnInitDialog()
{
...
//b Tab Control
TC_ITEM TabItem;
TabItem.mask = TCIF_TEXT;
TabItem.pszText = "X / Y";
m_TabMain.InsertItem( 0, &TabItem );
TabItem.pszText = "CScan";
m_TabMain.InsertItem( 1, &TabItem );
TabItem.pszText = "Çàêëàäêà3";
m_TabMain.InsertItem( 2, &TabItem );

CPage1* pPage1;
pPage1 = new CPage1;
TabItem.mask = TCIF_PARAM;
TabItem.lParam = (LPARAM)pPage1;
m_TabMain.SetItem(0, &TabItem);
VERIFY(pPage1->Create(CPage1::IDD, &m_TabMain));
pPage1->SetWindowPos(NULL, 10, 30, 0, 0, SWP_NOSIZE | SWP_NOZORDER);
pPage1->ShowWindow(SW_SHOW);

CPage2* pPage2;
pPage2 = new CPage2;
TabItem.mask = TCIF_PARAM;
TabItem.lParam = (LPARAM)pPage2;
m_TabMain.SetItem(1, &TabItem);
VERIFY(pPage2->Create(CPage2::IDD, &m_TabMain));
pPage2->SetWindowPos(NULL, 10, 30, 0, 0, SWP_NOSIZE | SWP_NOZORDER);
pPage2->ShowWindow(SW_HIDE);

CPage3* pPage3;
pPage3 = new CPage3;
TabItem.mask = TCIF_PARAM;
TabItem.lParam = (LPARAM)pPage3;
m_TabMain.SetItem(2, &TabItem);
VERIFY(pPage3->Create(CPage3::IDD, &m_TabMain));
pPage3->SetWindowPos(NULL, 10, 30, 0, 0, SWP_NOSIZE | SWP_NOZORDER);
pPage3->ShowWindow(SW_HIDE);
//e Tab Control
...
}

Я хочу из функции класса CPage2 считать значение переменной класса CWinClientDlg

Автор: kometa_triatlon 27.2.2006, 15:53
Код

BOOL CWinClientDlg::OnInitDialog()
{
...
//b Tab Control
TC_ITEM TabItem; 
TabItem.mask = TCIF_TEXT; 
TabItem.pszText = "X / Y"; 
m_TabMain.InsertItem( 0, &TabItem ); 
TabItem.pszText = "CScan"; 
m_TabMain.InsertItem( 1, &TabItem ); 
TabItem.pszText = "Çàêëàäêà3"; 
m_TabMain.InsertItem( 2, &TabItem );

CPage1* pPage1; 
pPage1 = new CPage1; 
TabItem.mask = TCIF_PARAM; 
TabItem.lParam = (LPARAM)pPage1; 
m_TabMain.SetItem(0, &TabItem); 
VERIFY(pPage1->Create(CPage1::IDD, &m_TabMain)); 
pPage1->SetWindowPos(NULL, 10, 30, 0, 0, SWP_NOSIZE | SWP_NOZORDER); 
pPage1->ShowWindow(SW_SHOW); 

CPage2* pPage2; 
pPage2 = new CPage2; 
TabItem.mask = TCIF_PARAM; 
TabItem.lParam = (LPARAM)pPage2; 
m_TabMain.SetItem(1, &TabItem); 
VERIFY(pPage2->Create(CPage2::IDD, &m_TabMain)); 
pPage2->SetWindowPos(NULL, 10, 30, 0, 0, SWP_NOSIZE | SWP_NOZORDER); 
pPage2->ShowWindow(SW_HIDE); 

CPage3* pPage3; 
pPage3 = new CPage3; 
TabItem.mask = TCIF_PARAM; 
TabItem.lParam = (LPARAM)pPage3; 
m_TabMain.SetItem(2, &TabItem); 
VERIFY(pPage3->Create(CPage3::IDD, &m_TabMain)); 
pPage3->SetWindowPos(NULL, 10, 30, 0, 0, SWP_NOSIZE | SWP_NOZORDER); 
pPage3->ShowWindow(SW_HIDE);
//e Tab Control
...
}

Автор: Nikkiforum 27.2.2006, 15:58
Что-то я не могу понять так в чём разница?

Автор: kometa_triatlon 27.2.2006, 16:05
А что за классы CPage1, CPage2...?
А вобще-то попробуй функцию GetParent, она возвращает указатель на родительское окно.
Добавлено @ 16:06
Nikkiforum,
разница в том, что читать легче.

Автор: Nikkiforum 27.2.2006, 16:18
а как добовлять циферки слева smile

Автор: kometa_triatlon 27.2.2006, 16:26
Какие циферки?

Автор: Nikkiforum 27.2.2006, 16:55
Ну как сделать более читабельным.
Мда по поводу GetParent - могу ли достучаться до контролов моего родительского окна?
Почему у меня не работает:
begin_point_D23 = (int)sch_array*(pDlg->m_BeginPoint.GetPos())/(pDlg->m_BeginPoint.GetRangeMax());
m_BeginPoint - это контрол родительского окна - почему при выполнении программы появляется ошибка smile

Автор: kometa_triatlon 5.3.2006, 11:44
Nikkiforum,
Над полем для ввода текста есть пункт "код" =). Там Выбираешь язык.

Код

AfxGetApp()->GetMainWnd()

Если у тебя диалоговое приложение, получишь указатель на главный диалог.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)