visual studio .net 2003 环境下,MFC程序调试经验(一)

原创 2006年05月27日 21:50:00

1、GetParent ()    GetParentOwner()  使用 ShowWindow()异常问题。

利用visual stuido .net 2003MFC,建立 名称为 SP的项目。

详细谈论见:

http://community.csdn.net/Expert/topic/4766/4766624.xml?temp=.4831049

问题简单描述:mfc 单文档,一个对话框中能否调用另外一个对话框的窗口显示?ShowWindow 异常问题。

主要问题所在:GetParent() GetParentOwner() 理解不清楚,因此导致无法成功的调用父窗口,也导致了ShowWindow()异常。

问题描述:

 

MFC单文档程序:

CSPView 中有2个指向子对话框窗口的指针:CDataDialog *m_pDataDlg;

//注:class CDataDialog:public CDialog{

CPasswordDialog *m_pPasswordDlg;

//注:class CPathDialog:public CDialog{

建立2个子窗口时,都把父窗口设为当前窗口。

    if(NULL==m_pDataDlg) //have not created the dialog box

    {   m_pDataDlg = new CDataDialog(m_pPointSet,m_pArcSet);

       m_pDataDlg->Create(IDD_INPUT_DATA,this);//父窗口为当前窗口

    }

    if(NULL==m_pPathDlg) //have not created the dialog box

    {   m_pPathDlg = new CPathDialog(m_pPointSet,m_pArcSet,m_pDataDlg);

       m_pPathDlg->Create(IDD_PATH,this);//父窗口为当前窗口

    }

问题:希望在对话框CPasswordDialog对象中显示 CDataDialog 对象。

这里利用到了 父窗口 CSPView 。下面为我的初步方案(错误方案):

void CPasswordDialog::OnBnClickedOk()

{   // TODO: 在此添加控件通知处理程序代码

       CSPView *view=(CSPView *) GetParent() ;  //调用父窗口  

        view->m_pDataDlg->ShowWindow(SW_SHOW);       //异常

}

 

解决方法:

       CSPView *view=(CSPView *) GetParent() ;  //调用父窗口  

       //实际上,这里得到的是一个的是一个指向CMainFram对象 的指针,而非其父窗口CView 对象的指针。

应该将此句改为:

CSPView *view=(CSPView *) ( ( (CMainFrame *)GetParent() )->GetActiveView() );  //调用父窗口     

2、利用MFC  ODBC 方式连接 SQL Server 2000数据库

详细谈论见:

http://community.csdn.net/Expert/topic/4759/4759165.xml?temp=.9848444

问题简单描述如何分别读取数据库中两个表的数据?我的方法一个表可以成功读取出,另外一个表失败。

问题本质所在:mfc :单文档+数据库支持”方式对于默认的 数据记录集 无形调用了

Open() 然而,当我们自己手动添加 数据记录集合,需要显式调用 Open()

问题描述:

我的方法是: mfc :单文档+数据库支持(不支持文件的数据库视图+ODBC+绑定所有列+动态集)。

利用向导 生成一类 class CPointSet:public CRecordSet (读取数据库中的表point.

利用,我手工建立一个类class CArcSet:public CRecordSet (读取数据库中的表arc).

一个记录集(向导生成的)可以正确读取,另外一个(手动生成的)数据读取却失败。

我的初始想法:

由于刚刚接触数据库,并且刚刚学会利用MFCODBC方式连接数据库,因此对于CRecordSet 本身理解的不是很透彻。

我是利用MFC向导(数据库支持)来生成程序。由于向导已经帮我生成了一个CRecordSet的派生类CPointSet,因此我模仿该CPointSet,也建立了一个CRecordSet的派生类CArcSet

我尝试将程序中所有出现CPointSet的地方也同样添加类似的CArcSet程序代码。

然而,现实总是不尽人意!!!!这样子的后果是,出现了前文所提到的问题。

 

那么,应该如何解决这个问题呢?

我的原始程序代码片段:

void CSPView::OnInitialUpdate()

{   CView::OnInitialUpdate();

 

    m_pPointSet = &GetDocument()->m_PointSet;     //向导生成的代码

    m_pArcSet = &GetDocument()->m_ArcSet;         //我手动建立的代码

}

请注意:

CPointSet::CPointSet(CDatabase* pdb)   : CRecordset(pdb)  //已经默认调用了Open()函数

CArcSet::CArcSet(CDatabase* pdb)   : CRecordset(pdb)      //没有默认调用Open()函数!!!!

解决方法:

因此,我们需要将代码改动如下:

    m_pPointSet = &GetDocument()->m_PointSet;     //向导生成的代码

    m_pArcSet = &GetDocument()->m_ArcSet;         //我手动建立的代码

    //仍然需要添加的代码

    // m_pPointSet->IsOpen() 为真,而  m_pArcSet->IsOpen() 为假

    if (!m_pArcSet|| ( !m_pArcSet->IsOpen() && !m_pArcSet->Open() )

    {  AfxMessageBox("Connecting data base error.");

       return;

    }

 

Visual Studio .NET 2003开发环境

昨天到今天搞了一整天,把人都要差点搞崩了! ,以后再也不能乱关机了,因为这次的大意,几乎所有的Net安装,调试问题都被我碰到了,还好,我一个个把他记录下来了,同时,在CSDN找了一些相关的解决方法,不...
  • msdnlu
  • msdnlu
  • 2007年07月12日 09:17
  • 1169

Visual Studio 各版本区别及下载

Visual Studio 各版本区别: 从1998年的 6.0 到现在的 2010 Ultimate 如何注册和获得以及购买许可 VS101 2010-07-08 04:33:59 阅读1072 ...
  • wisage
  • wisage
  • 2011年05月31日 09:28
  • 4370

VisualStudio.NET2003下载地址

VisualStudio.NET2003,它是Microsoft的第二代开发工具,用于构建和部署功能强大而安全的连接Microsoft.NET的软件。 下载地址中有Visual Studio ....
  • vbLittleBoy
  • vbLittleBoy
  • 2014年08月23日 11:46
  • 5671

Visual Studio .Net 2003 的安装

Q:安装Visual Studio .Net 2003,结果出现提示:“安装程序检测到另一个程序要求计算机重新启动.必须重新启动计算机后才能安装visual studio.net系统必备.系统重新启动...
  • Elysium
  • Elysium
  • 2006年09月01日 13:15
  • 9651

VisualStudio2003 下载地址

VisualStudio2003  下载地址http://www.ivdown.com/ShowContent.aspx?id=1546&pid=4&cid=36 msdn2003帮助文件下载地址 ...
  • xqf222
  • xqf222
  • 2006年09月25日 21:21
  • 2056

MSDN Library Visual Studio .NET 2003 简体中文版(ISO) 免费下载

       MSDN Library Visual Studio .NET 2003 简体中文版(ISO)  CD1      MSDN Library Visual Studio .NET 200...
  • ddl007
  • ddl007
  • 2006年04月09日 21:58
  • 9305

VisualStudio.NET_2003及其 MSDN 下载地址

很少看见VisualStudio.NET_2003及其 MSDN 的下载地址,今天终于找见了。贴出来和大家分享。VisualStudio.NET_2003及其 MSDN 下载地址http://www....
  • pcent
  • pcent
  • 2005年05月30日 17:23
  • 1694

如何删除 Visual Studio .NET 2003

如何删除 Visual Studio .NET 2003本文分步介绍了可以用来从您的计算机中删除 Microsoft Visual Studio .NET 2003 的两种方法。使用“添加或删除程序”...
  • ljc_zy
  • ljc_zy
  • 2006年03月13日 20:57
  • 1365

关于"插入Microsoft Visual Studio .Net Enterprise Architect 2003”的说明

今天想装个Microsoft Visual Studio .Net 2003 SP1的补丁,装的时候总是提示要我插入Microsoft Visual Studio .Net Enterprise Ar...
  • wei123456
  • wei123456
  • 2008年03月06日 17:09
  • 856

Microsoft Visual Studio 2003 2005 2008 2010 2012 下载

为了方便大家 ,我收集的工具公布出来。 VS 2003 http://pan.baidu.com/share/link?shareid=2273846783&uk=3995120429 VS ...
  • piazini
  • piazini
  • 2013年08月23日 09:12
  • 11868
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:visual studio .net 2003 环境下,MFC程序调试经验(一)
举报原因:
原因补充:

(最多只允许输入30个字)