新建MFC工程再次打开找不到按钮视图

展开阅读全文

新建MFC基于对话框工程崩溃

06-26

VS2013环境, 以前没出现过,rnCDemo06App::CDemo06App()rnrn // 支持重新启动管理器rn m_dwRestartManagerSupportFlags = AFX_RESTART_MANAGER_SUPPORT_RESTART;rnrn // TODO: 在此处添加构造代码,rn // 将所有重要的初始化放置在 InitInstance 中rnrnrnrn// 唯一的一个 CDemo06App 对象rnrnCDemo06App theApp;rnrnrn// CDemo06App 初始化rnrnBOOL CDemo06App::InitInstance()rnrn // 如果一个运行在 Windows XP 上的应用程序清单指定要rn // 使用 ComCtl32.dll 版本 6 或更高版本来启用可视化方式,rn //则需要 InitCommonControlsEx()。 否则,将无法创建窗口。rn INITCOMMONCONTROLSEX InitCtrls;rn InitCtrls.dwSize = sizeof(InitCtrls);rn // 将它设置为包括所有要在应用程序中使用的rn // 公共控件类。rn InitCtrls.dwICC = ICC_WIN95_CLASSES;rn InitCommonControlsEx(&InitCtrls);rnrn CWinApp::InitInstance();rnrnrn AfxEnableControlContainer();rnrn // 创建 shell 管理器,以防对话框包含rn // 任何 shell 树视图控件或 shell 列表视图控件。rn CShellManager *pShellManager = new CShellManager;rnrn // 激活“Windows Native”视觉管理器,以便在 MFC 控件中启用主题rn CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS(CMFCVisualManagerWindows));rnrn // 标准初始化rn // 如果未使用这些功能并希望减小rn // 最终可执行文件的大小,则应移除下列rn // 不需要的特定初始化例程rn // 更改用于存储设置的注册表项rn // TODO: 应适当修改该字符串,rn // 例如修改为公司或组织名rn SetRegistryKey(_T("应用程序向导生成的本地应用程序"));rnrn CDemo06Dlg dlg;rn m_pMainWnd = &dlg;rn [color=#FF0000]INT_PTR nResponse = dlg.DoModal();[/color]rn if (nResponse == IDOK)rn rn // TODO: 在此放置处理何时用rn // “确定”来关闭对话框的代码rn rn else if (nResponse == IDCANCEL)rn rn // TODO: 在此放置处理何时用rn // “取消”来关闭对话框的代码rn rn else if (nResponse == -1)rn rn TRACE(traceAppMsg, 0, "警告: 对话框创建失败,应用程序将意外终止。\n");rn TRACE(traceAppMsg, 0, "警告: 如果您在对话框上使用 MFC 控件,则无法 #define _AFX_NO_MFC_CONTROLS_IN_DIALOGS。\n");rn rnrn // 删除上面创建的 shell 管理器。rn if (pShellManager != NULL)rn rn delete pShellManager;rn rnrn // 由于对话框已关闭,所以将返回 FALSE 以便退出应用程序,rn // 而不是启动应用程序的消息泵。rn return FALSE;rnrn[img=https://img-bbs.csdn.net/upload/201606/26/1466911603_719860.png][/img]rnrn断点再红色地方;rn第二个在appmodul.cpp里rn#pragma warning(suppress: 4985)rnrn // call shared/exported WinMainrn return AfxWinMain(hInstance, hPrevInstance, lpCmdLine, nCmdShow);rnrn[img=https://img-bbs.csdn.net/upload/201606/26/1466911615_506860.png][/img] 论坛

MFC中如何重载打开新建文件操作!

10-31

在做一个文本编辑器,需要能对至少两种文件进行编辑(如.cpp和.asm)。(默认的打开和新建文件不能满足要求,即使修改字符串表也只能在过滤器加一个后缀名。)所以本人考虑重载open和new操作,已经忙了好一段时间,有个问题一直不能得意解决,请高手帮帮忙啊,救命啊!rn用的是MDI,但没有建两个文档模板,只是用了一个全局的标志位表示是哪种文件,即:采用多视的思路。打开一个文件时,会根据后缀名设置标志位,然后调用不同的关键字集高亮显示关键字;新建也是如此,就像VC一样,让用户选一种文件,同时设置标志位,然后新建!思路就是这样的。rn我已经基本实现,但为什么会这样:rn要是没有这句:cmdInfo.m_nShellCommand = CCommandLineInfo::FileNothing;(即程序初始会打开一个视图)的话新建和打开都是没问题的,但要是加了上边那句(即程序初始只有菜单没有视图)的话,打开和新建就会导致程序崩溃。(我怀疑是不是子框架已经销毁了啊)实在搞不懂,请高人帮忙啊!我的重载函数:rnvoid CSampleView::OnFileOpen() rnrn CString m_szFilePathName; //图像文件路径rn CString m_szFileName; rn CFileDialog dlg(true,NULL,NULL,OFN_OVERWRITEPROMPT,"ASM Files(*.asm)|*.asm|C++ Files(*.c++)|*.cpp||",NULL);rn if(dlg.DoModal()==IDOK)rn rn m_szFileName = dlg.GetFileName();rn m_szFilePathName = dlg.GetPathName();rn CString type=dlg.GetFileExt();//得到文件扩展名rn if(type=="asm")rn isAsm=true;rn elsern isAsm=false;rn rn elsern return; rnrn CSampleDoc* pDoc = GetDocument();rn pDoc->SetTitle(m_szFileName);rn pDoc->OnOpenDocument(m_szFilePathName);rn pDoc->UpdateAllViews(NULL);rnrnvoid CSampleView::OnFileNew() rnrn CNewFileDlg nfDlg(this);rn if(nfDlg.DoModal()==IDOK)rn ;rn]rn打开的对话框rnvoid CNewFileDlg::OnOK() rnrn UpdateData(true);rn CString m_szFilePathName;rn m_szFilePathName=m_save_path;rn m_szFilePathName+="\\";rn m_szFilePathName+=m_filename;rn rn CString string; //从列表框中获得的字符串rn int nIndex = m_NewListBox.GetCurSel();rn if(nIndex!=LB_ERR)rn m_NewListBox.GetText(nIndex,string);rn //AfxMessageBox(string);rn CString extStr; //获得扩展名 rn if(string=="C File (*.c)")rn rn extStr=".c";rn isAsm=false;rn rn else if(string=="Asm File (*.asm)")rn rn extStr=".asm";rn isAsm=true;rn rn m_szFilePathName+=extStr;rnrn CSampleApp *theApp;rn theApp=(CSampleApp *)::AfxGetApp(); rn CMainFrame *myWin; rn myWin=(CMainFrame *)theApp->GetMainWnd(); rnrn CChildFrame *myChildFrame; rn myChildFrame=(CChildFrame *)myWin->MDIGetActive(); rn CSampleDoc *pDoc;rn pDoc=(CSampleDoc *)myChildFrame->GetActiveView()->GetDocument();rn pDoc->OnSaveDocument(m_szFilePathName);rn CSampleView *pView;rn pView=(CSampleView *)myChildFrame->GetActiveView();rn pView->OnFileOpen(m_szFilePathName);rnrn CDialog::OnOK();rnrn代码帖的较多,其实问题没这么繁琐,由于本人对mfc不胜熟悉,也许哪位高人一看便知,希望大家多多帮忙啊。(有兴趣的朋友可以留下邮箱,我给您发过去,运行一下可能会对问题比较清楚) 论坛

没有更多推荐了,返回首页