描述:
在面版A中添加了一个TabControl控件,在A控件中加载了一个Style为Child,Border为None对话框B,在B对话框中放置了一个Microsoft FlexGrid Control控件。在A面版上做了个按钮,目的是对B对话框上的控件修改值并显示,代码如下:
void CForm1::OnXiuGai()
{
CString sRow,sCol;
long iRow,iCol;
UpdateData(TRUE);
sRow = m_xuhao.Mid(0,1);
sCol = m_xuhao.Mid(1,1);
iRow = atoi(sRow) + 1;
iCol = atoi(sCol) + 1;
// CMsflexgrid1 *pDttz = (CMsflexgrid1 *)SetActiveWindow();
// CMsflexgrid1 *pDttz = (CMsflexgrid1 *)GetActiveWindow();
// CMsflexgrid1 *pDttz = (CMsflexgrid1 *)GetOwner();
// CMsflexgrid1 *pDttz = (CMsflexgrid1 *)GetWindow( GW_HWNDLAST );
// CMsflexgrid1 *pDttz = (CMsflexgrid1 *)GetLastActivePopup();
// CMsflexgrid1 *pDttz = (CMsflexgrid1 *)GetParentOwner();
CMsflexgrid1 *pDttz = new CMsflexgrid1;
pDttz->m_grid.SetRow(iRow);//设置Microsoft FlexGrid Control的行值
pDttz->m_grid.SetCol(iCol);//设置Microsoft FlexGrid Control的列值
pDttz->m_grid.SetText(m_nr);//设置Microsoft FlexGrid Control所在行列的值
//问题:用上面屏蔽的几条语句中的任意一条,后面的语句执行出现如下等错误:
//The thread 0x98C has exited with code 3 (0x3)
//Unhandled exception in TestTabControl.exe :0xC0000005:Acess violation
//请问:要如何得到m_grid的句本信息,如何才能正确修改这个控件的值
//注释:CForm1是面版A的类名称,CMsflexgrid1是B对话框的类名称
}
在B对话框上也做了个测试比较按钮,目的和上面函数一样,代码如下:
void CMsflexgrid1::OnButton1()
{
CString sRow,sCol;
long iRow,iCol;
UpdateData(TRUE);
sRow = m_xh.Mid(0,1);
sCol = m_xh.Mid(1,1);
iRow = atoi(sRow) + 1;
iCol = atoi(sCol) + 1;
m_grid.SetRow(iRow);
m_grid.SetCol(iCol);
m_grid.SetText(m_nr);
//此段代码能够按所需意图正确执行!
}
两段代码比较,主要区别在于:存在的位置不一样,即第一段代码是在Microsoft FlexGrid Control所属类的外面修改,而第二段代码是在Microsoft FlexGrid Control所属类中修改。
请问:象这种情况下要如何才能在Microsoft FlexGrid Control所属类外面的类中修改控件的值?希望能给出相关代码!谢谢!
解决方案1:
改好了,已回复邮件