我的问题是:
我的视图类CMyView是从CFormView派生的,其中有一CListCtrl控件m_list,视图类中包含一个函数叫OnListall(),其作用是将数据库中的数据显示在m_list控件中。在此基础上,我生成了一个对话框类用于显示每条记录,并能更新数据库中相应记录。问题是在更新数据库记录后,我通过视图类指针调用OnListall()函数,希望视图类中m_list中的数据也能相应更新,但是没有成功,m_list中的数据没有进行相应的更新。
在进行数据更新后,我在对话框中调用的函数是这样的:
//更新数据列表控件
CMyView *m_pView=(CMyView *)((CMainFrame *)GetParent())->GetActiveView();
m_pView->OnListall();请问高手:这样调用有问题吗?应该怎么更正呢?
我的视图类CMyView是从CFormView派生的,其中有一CListCtrl控件m_list,视图类中包含一个函数叫OnListall(),其作用是将数据库中的数据显示在m_list控件中。在此基础上,我生成了一个对话框类用于显示每条记录,并能更新数据库中相应记录。问题是在更新数据库记录后,我通过视图类指针调用OnListall()函数,希望视图类中m_list中的数据也能相应更新,但是没有成功,m_list中的数据没有进行相应的更新。
在进行数据更新后,我在对话框中调用的函数是这样的:
//更新数据列表控件
CMyView *m_pView=(CMyView *)((CMainFrame *)GetParent())->GetActiveView();
m_pView->OnListall();请问高手:这样调用有问题吗?应该怎么更正呢?
解决方案 »
- 如何判断某个进程的一块内存空间是否可读
- 重写DrawItem虚函数什么时候触发?
- render to texture 支持GL_LUMINANCE32F_ARB么?
- 多视图如何获得视图指针
- 请帮忙解释一下vc与mfc
- dll中每次得到的计算数据怎么在主程序中的画出来?(请看问题的详细描述-> )
- MFC CClientdc dc(this)失败,执行到这里就报错Debug assertion failed,调试显示hwnd没有值。
- 添加记录是与到的古怪问题!!!!!!!!!
- 请教如何使自定义基于cwnd的类响应鼠标拖动改变大小
- printf( "+[%s]\n", (LPCSTR)strName ); ??????问题见27 28行注释
- ●一个超简单的正则表达式在CAtlRegExp里通不过,却可以在JS里面匹配 请大家指点我一下
- vc中怎样调用dos命令?
OnListall()是视图中的一个函数,它的作用是重新在控件中显示全部数据。这个函数同样也和菜单与工具栏相关联,即可以通过菜单项和工具栏中相应的菜单和按钮执行的。问题出在:
如果更新数据后,单击相应菜单,则控件数据就能立即更新。
而如果在对话框中调用下面语句:
//更新数据列表控件
CMyView *m_pView=(CMyView *)((CMainFrame *)GetParent())->GetActiveView();
m_pView->OnListall();就得不到相应的更新效果!我是百思不得其解!我到底错在哪?
另外,在窗口上只一个视图还是有多个视图,如果有多个视图的话,GetActiveView()就不一定能指的是你想要的视图了.
祝你好运了,呵呵
建议采用遍历的方式获得视图指针
遍历的代码如下
POSITION pos; pos=theApp.pDocTemplate->GetFirstDocPosition();
CGraphBrowseDoc *pDoc=(CGraphBrowseDoc *)theApp.pDocTemplate->GetNextDoc(pos);
pos=pDoc->GetFirstViewPosition();
pView=(CGraphBrowseView *)pDoc->GetNextView(pos);
比较怪的是,我在单步调试的时候没问题,能正常显示更新后的数据,但如果不是在单步调试时就不行,无论是在debug还是在release下,数据显示还是原来的,就好像没有刷新一样?憋闷死我了!