[開発環境]=VisualStudio2005
アプリケーションに
FunctionFormView.cpp
Function_A.cppがあります。
//FunctionFormView.h内
private:
CPropertySheet m_Sheet;
CFunction_A m_page_A;
CFunction_B m_page_B;
//FunctionFormView.cpp内
//2つのタブを設定
void CFunctionFormView::OnInitialUpdate(){
if( m_Sheet.GetPageCount() == 0 ) {
m_Sheet.AddPage(&m_page_A);
m_Sheet.AddPage(&m_page_B);
m_Sheet.Create(this, WS_CHILD | WS_VISIBLE, NULL);
}
}
bool CFunctionFormView::set_Edit_onView()
{
//m_page_Aが最前面で、m_page_A上のエディットボックスの値を設定する。
int x = 10;
int y = 10;
CTabCtrl* pTab = m_Sheet.GetTabControl();
if( pTab != NULL ) {
(1)CPropertyPage *pActive = m_Sheet.GetActivePage();
(2)CFunction_A *pfm = (CFunction_A*)pActive->GetActiveWindow();
(3)pfm->set_Edit(x,y);
}
return false;
}
//Function_A.cpp内
//エディットボックス(IDC_EDIT)と変数m_Edit
//関数set_Editはpublic
bool CFunction_A::set_Edit(int x, int y)
{
m_Edit.Format(_T(%d , %d), x , y );
SetDlgItemText(IDC_EDIT,m_Edit);
CFunction_M::UpdateData(false);
return false;
}
m_page_Aがアクティブになっているときに、set_Edit_onView()から
set_Edit(x,y)を呼び出すと、
m_Edit.Format(_T(%d , %d), x , y );
で落ちてしまいます。(1)(2)(3)の部分の書き方はどうすればよいのでしょうか?
CFunctionってCPropertyPageじゃないのか。
m_page_A直じゃ駄目なのか。
(1),(2),(3)部分は単に
m_page_A.set_Edit(x,y);
で呼ぶことができました。
ありがとうございました。