我在对话框使用vsflexgrid(oledb)8.0 邦定Rs,仅仅显示了记录,关闭对话框正确。可主应用关闭窗体却报错,为什么?
解决方案 »
- 请问如何的到对话框位置坐标?
- 怎么有一个进程的用户名获取不到?
- VC 在文件右击菜单中 加入一个类似 "发送到"的项
- 求指导在mfc上调用google地图api
- 怪??为什么将0x2E00拷贝到一块内存中就变成了0x0000,而改成0x2E01时就没错呢?
- 100求一解:为什么在View这类的程序中ctrl+space就可以调用/关闭输入法,而CDialog却不可以
- 怎样填充五角星内的区域为红色?
- 大家知道。。。winxp支持新的ico格式。。。
- 静态绑定问题:确定缺省参数和重载是如何选用静态还是动态(附源码!)
- 模态对话框对同一个主窗口下非模态showwindow执行的影响
- 网站新开 - 交换链接
- vc单文档的一个界面问题
调用是这样的:
1:CMyDll中有一个CDlgUseFlexGrid,在其中放置控件vsflexgrid(oledb)8.0,在OnInitDialog()中,如下调用,即结果从数据库中读出并显示出来:
m_ctrlVsGridData.SetFixedCols(0);
m_ctrlVsGridData.SetRefDataSource(GetRSData(m_pAdoConn));
m_ctrlVsGridData.SetColHidden(0,false);
其中:_RecordsetPtr GetRSGjqyUpdate(CBBAdoConnection *pCon);
2:然后在CMyDll中使用显示窗体的函数:
void CMyDll::ShowFlexDlg(CBBAdoConnection *m_pDBCon)
{
if (m_pDlgUseFlexGrid == NULL) m_pDlgUseFlexGrid = new CDlgUseFlexGrid();
CDlgUseFlexGrid *pDlgUseFlexGrid = (CDlgUseFlexGrid *)m_pDlgUseFlexGrid;
pDlgUseFlexGrid->m_pAdoConn = m_pDBCon;
pDlgUseFlexGrid ->DoModal();
}~CMyDll()
{
if(m_pDlgUseFlexGrid != NULL) delete (CDlgUseFlexGrid *)m_pDlgUseFlexGrid;
//注意:该句立即报错,内存溢出类错误,如果注掉,则在CMyAppView析构后关闭数据库连接未知错误?
}
3:CMyAppView.cpp中调用
pMyDll->ShowFlexDlg();如果在dialog中onClose中,关闭连接,首先,CMyAppView.cpp其他地方需要使用.其次,如果关闭了连接,主应用窗体关闭时依然报错.
其中:_RecordsetPtr GetRSGjqyUpdate(CBBAdoConnection *pCon);
改为:_RecordsetPtr GetRSData(CBBAdoConnection *pCon);m_pDlgUseFlexGrid 声明如下:void* m_pDlgUseFlexGrid;
pDlgUseFlexGrid->m_pAdoConn = m_pDBCon;
pDlgUseFlexGrid ->DoModal(); 还多加这个指针变量做什么
当析构完m_pDlgUseFlexGrid后, pDlgUseFlexGrid不就成野指针了直接就用m_pDlgUseFlexGrid啊