为何一个MFC程序会有时能正常运行,有时却不能正常运行呢? (内容是来自我的一个帖子)
2013-04-05 19:53
387 查看
PS:这是来自我的一个帖子 linkTo: http://bbs.csdn.net/topics/390415152?page=1#post-394121704
这是正常运行时的界面:
这是出现未响应的界面:
下面的内容也是我的回复我的帖子的::
嗯,这个建议我已经尝试了,后来发现不了自己的操作问题,而是发现MFC向导生成给我的代码有问题(究竟是
不是MFC的问题,我还不确定,但我现在是这样认为的).
至于我为什么这样认为的?先看看MFC向导生成的代码:
h文件:(ps:里面没有CMainFrame对象喔)
而是在其重写的虚函数CMFCtest1App::InitInstance里面有这几行代码:
发现有一个CMainFrame类的对象指针pFrame,然后生成一个CMainFrame对象,等等.
以小生的理解,当程序退出后,即CWinApp子类CMFCtest1App退出时,没有把CMainFrame对象指针delete掉???
所以,对指针的使用机会不多的我,只好把它改成CMFCtest1App的数据成员了:
在cpp文件中:
之后编译,生成exe文件.执行,执行,再执行,没有碰见上面的问题了喔!
这是小生的肤浅之见.虽然C指针的作用很强大,但对初学者来说,难免有点什么了
这是正常运行时的界面:
这是出现未响应的界面:
下面的内容也是我的回复我的帖子的::
嗯,这个建议我已经尝试了,后来发现不了自己的操作问题,而是发现MFC向导生成给我的代码有问题(究竟是
不是MFC的问题,我还不确定,但我现在是这样认为的).
至于我为什么这样认为的?先看看MFC向导生成的代码:
h文件:(ps:里面没有CMainFrame对象喔)
// MFCtest1.h : MFCtest1 应用程序的主头文件 // #pragma once #ifndef __AFXWIN_H__ #error "在包含此文件之前包含“stdafx.h”以生成 PCH 文件" #endif #include "resource.h" // 主符号 // CMFCtest1App: // 有关此类的实现,请参阅 MFCtest1.cpp // class CMFCtest1App : public CWinApp { public: CMFCtest1App(); // 重写 public: virtual BOOL InitInstance(); virtual int ExitInstance(); // 实现 public: afx_msg void OnAppAbout(); DECLARE_MESSAGE_MAP() }; extern CMFCtest1App theApp;
而是在其重写的虚函数CMFCtest1App::InitInstance里面有这几行代码:
// 若要创建主窗口,此代码将创建新的框架窗口 // 对象,然后将其设置为应用程序的主窗口对象 CMainFrame* pFrame = new CMainFrame; if (!pFrame) return FALSE; m_pMainWnd = pFrame; // 创建并加载框架及其资源 pFrame->LoadFrame(IDR_MAINFRAME, WS_OVERLAPPEDWINDOW | FWS_ADDTOTITLE, NULL, NULL);
发现有一个CMainFrame类的对象指针pFrame,然后生成一个CMainFrame对象,等等.
以小生的理解,当程序退出后,即CWinApp子类CMFCtest1App退出时,没有把CMainFrame对象指针delete掉???
所以,对指针的使用机会不多的我,只好把它改成CMFCtest1App的数据成员了:
public: CMainFrame* pFrame;//或者是:CMainFrame pFrame;也可以的吧
在cpp文件中:
//在构造函数里初始化 pFrame=new CMainFrame;
BOOL CDSApp::InitInstance() { //...... if (!pFrame) return FALSE; m_pMainWnd = pFrame; // 创建并加载框架及其资源 pFrame->LoadFrame(IDR_MAINFRAME, WS_OVERLAPPEDWINDOW | FWS_ADDTOTITLE, NULL, NULL); //...... return TRUE; }
之后编译,生成exe文件.执行,执行,再执行,没有碰见上面的问题了喔!
这是小生的肤浅之见.虽然C指针的作用很强大,但对初学者来说,难免有点什么了
相关文章推荐
- 用VC2013编译了一个程序,在Windows 8、Windows 7(64位、32位)下都能正常运行。但在Win XP,Win2003下运行时,却报错不能运行
- 怎么判断一个程序正在运行,不能让程序重复启动
- VS MFC 程序不能在别的机子运行 提示配置不正确
- MFC中运行一个已经写好了的程序的函数winexec
- QT打包程序(程序安装与部署)含数据库、打印、等不能正常运行的解决方案
- 解决WIN7-64,VS2008编译的MFC程序在WIN7-32/XP上不能运行的问题
- VC中DEBUG版本可以正常运行的程序有时无法在RELEASE版本下运行
- MFC之旅——分析一个MFC程序运行脉络
- MFC 程序只能运行一个实例 互斥对象
- MFC对话框程序只能同时运行一个
- MFC程序只运行一个实例
- SSH框架:同一个工程之前可以正常运行,现在不能
- 在eclipse程序中设置的断点上有一个斜杠,正常启动debug不能够跳转到debug页面,怎么解决
- (他山之石)MFC学习之路(二)如何在多文档视图中,程序一开始运行,只出现主框架,不打开一个文档?
- Windows7 不能正常运行程序的解决方法
- 编写一个程序,此程序在运行时要求用户输入一个 整数,代表某门课的考试成绩,程序接着给出“不及格”、“及格”、“中”、“良”、“优”的结论。要求程序必须具备足够的健壮性,不管用户输入什 么样的内容,都不会崩溃。
- 当import一个新的android项目时,项目名称上出现一个红色的感叹号,程序不能运行。
- 十分棘手的问题,使用vs2005在文件系统机制下开发出来的web程序,配置到iis就不能正常运行?
- 【框架-MFC】MFC 实现单例进程,只允许一个程序运行
- 一个遍历文件夹内容,显示文件名,大小等信息的MFC程序