C++中的单文档应用程序问题

C++中的单文档应用程序问题,第1张

很简单。在你的mainfrmcpp文件中,把下列代码注释掉:

第一处:

/ if (!m_wndToolBarCreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP

| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||

!m_wndToolBarLoadToolBar(IDR_MAINFRAME))

{

TRACE0("Failed to create toolbar\n");

return -1; // fail to create

}/

第二处:

/ m_wndToolBarEnableDocking(CBRS_ALIGN_ANY);

EnableDocking(CBRS_ALIGN_ANY);

DockControlBar(&m_wndToolBar);

/

这二段代码都在CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)函数中,一个在开头3,4行的位置,一段在倒数3,4行的位置,这是vc6中的代码,其他版本的基本一样,只要你用的不是vs2008 sp1

应用程序指:为完成某项或多项特定工作的计算机程序,它运行在用户模式,可以和用户进行交互,具有可视的用户界面。

应用程序通常又被分为两部分:图形用户接口(GUI)和引擎(engine)

它与应用软件的概念不同。应用软件指使用的目的分类,可以是单一程序或其他从属组件的集合,例如Microsoft Office、OpenOffice。应用程序指单一可执行文件或单一程序,例如Word、Photoshop。日常中可不将两者仔细区分。一般视程序为软件的一个组成部分。

扩展资料:

应用程序分类:

1、单文档

单文档就象是记事本,永远中有一个文档窗口

2、多重文档

多文档窗口就象是word可以同时打开多个文档窗口。

3、基本对话框三种。

用于对话框的设计。现在单纯的基于对话框使用的很少了,一般还用来编写即时通讯的软件,更多情况是对话框和多文档窗口穿插使用的。

对于基于对话框的应用程序,MFC AppWizard还没有对工具条的支持,但可以通过使用CToolBar类来构造生成工具条,我们下面介绍如何为对话框程序添加工具条。

用MFC AppWizard(EXE)生成一个基于对话框的应用程序,接受其默认设置,取名为demodialog。

给应用程序添加一个Toolbar的名称为IDR_TOOLBAR1的工具条资源,名称分别如下:

ID_NEW ‖生成新的程序等

ID_FILE_OPEN ‖打开文件

ID_FILE_SAVE ‖保存文件

ID_EXIT ‖退出程序

然后在对话框的头文件中添加如下的成员变量:

CToolBar m_wndToolBar;

在resoure编辑框中编辑这些toolbar资源,设置好大小和彼此的距离,添加工具条前,需要初始化工具条,添加如下所示的代码到demodialogcpp的OnInitDialog()函数中。

如果要使工具条是平面浮动的,可以添加如下的代码到对话框初始化函数中。

……

if(!m_wndToolBarCreateEx(this,TBSTYLE_FLAT, WS_CHILD|WS_VISIBLE|CBRS_TOP|CBRS_GRIPPER|CBRS_TOOLTIPS|CBRS_FLYBY|CBRS_SIZE_DYNAMIC)||!m_wndToolBarLoadToolBar(IDR_TOOLBAR1))

{

TRACE0(〃创建工具条失败\n〃);

return -1;‖不能创建,返回报-1

}RepositionBar

s(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,0);‖定位工具条

……

如果要使工具条是立体静态的,添加如下的代码到对话框初始化函数中。

……

if(!m_wndToolBarCreate(this)||!m_wndToolBarLoadToolBar(IDR_TOOLBAR1))

{

TRACE(〃创建工具条失败\n〃);

return -1;‖不能创建,返回

}RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,0);‖定位工具条

……

编译生成的程序,就实现了对话框的工具条,如果需要添加另外的对话框的工具条代码实现,用ClassWizard为工具条添加消息映射即可。

“写字板”是一个使用简单,但却功能强大的文字处理程序,用户可以利用它进行日常工作中文件的编辑。它不仅可以进行中英文文档的编辑,而且还可以图文混排,插入、声音、视频剪辑等多媒体资料。 记事本用于纯文本文档的编辑,功能没有写字板强大,适于编写一些篇幅短小的文件,由于它使用方便、快捷,应用也是比较多的,比如一些程序的READ ME 文件通常是以记事本的形式打开的。

在Windows XP 系统中的“记事本”又新增了一些功能,比如可以改变文档的阅读顺序,可以使用不同的语言格式来创建文档,能以若干不同的格式打开文件。

-----

综上.答案为D

。我这是抛砖引玉,很多功能没有,请大家不要见怪。言归正传,教程开始!

第一章 界面

打开VS2012(什么版本无所谓,思路都一样),新建一个MFC应用程序,输入工程名,选择保存目录,点击确定。注意,工程名字不要带中文字符,即使VS识别,这是一个良好的习惯。如图11

图11

点击确定后,出现MFC应用程序向导,第一页是概述,显示当前默认的要建立的应用程序设置,这里如果是基于对话框的应用程序,就可以直接点击完成了,不过还是建议大家一步一步的自己设置。如图12

图12

点击下一步,是设置应用程序类型的,是单文档(SDI),多文档(MDI),还是基于对话框的。那么什么是单文档程序呢?简单的说就是只能同时打开一个的程序,比如我们的记事本程序,打开第二个的时候第一个会被关闭。什么是多文档程序呢?就是可以同时打开多个的程序(可多开),一般还可以同时处理多个文件,比如我们Word,浏览器等等。对话框程序呢?就是对话框程序啦,通常没有菜单和工具条,只有按钮等等控件,比如我们的Windows计算器。我们今天要做的计算器也是基于对话框的。选择好之后,点击下一步。如图13

图13

从上一步来到这里,此处是设置应用程序界面功能的,包括对话框标题,有无最大化,最小化按钮,程序运行是最大化显示还是最小化显示等等。设置好后点击下一步。如图14

图14

好了,直到上一步完成,就可以直接点击完成了。然后,按照我的样式或者自定义一个布局安放按钮和编辑框吧!如图15

图15

先忽略按钮禁用的问题,那是后期代码搞定的问题了。

有没有遇到问题呢?比如你的编辑框不能出滚动条?这个问题要设置编辑框的属性。我们要设置编辑框自动换行,并且垂直和水平滚动条都设为TRUE。注意,如果Multiline的值不是TRUE的话,两个滚动条不可设为TRUE。如图16

图16

第二章 实现代码

好了,界面已经完成,现在就是我们实现具体功能的时候了。首先是数字按键和运算符按键的实现。在资源编辑器下双击按钮VS会自动为这个按钮添加事件。如图21

图21

双击之后会跳到代码实现的cpp文件中,我们在这里写代码。那么数字按键和运算符按键都是怎么实现呢?没错,字符串追加!这里对编辑框内的字符串追加一个字符有两种方法,一种是为编辑框添加变量,一种是直接追加。这里为了教学,我都实现了下。

编辑框变量追加法:

在资源编辑器中,在欲添加变量的控件(这里是我们的编辑框,其他的控件一样的方法)上右击,选择添加变量选项。如图22

图22

然后在添加变量向导中输入变量名,这里我用的Result。如图23

图23

好了,假设你的按钮0是第21个,ID是IDC_BUTTON21,那么你双击它之后产生的响应函数应该是 void CCalcDlg::OnBnClickedButton21()。

具体代码:

void CCalcDlg::OnBnClickedButton21()

{

//按键0

UpdateData(TRUE);          //把编辑框显示的字符串传给相应的变量Result

Result+="0";                //在按下数字键的情况下,则在Result后加"0"

UpdateData(FALSE);         //把Result的值传给编辑框显示。

}

好了,写完代码马上运行下,看看是不是每按一次按钮编辑框就多显示一个字符呢?其他按钮也一样的实现方法。

直接追加法:

直接追加法没有那么多事要做了,直接写代码就OK了,只是比上一种方法不易理解。

代码如下:

void CCalcDlg::OnBnClickedButton19()

{

CString str=L"2";    //要追加的字符

CEdit p=(CEdit)GetDlgItem(IDC_EDIT1); //对编辑框1追加

int Len=p->SendMessage(WM_GETTEXTLENGTH);//获取长度

p->SetSel(Len,Len);

p->ReplaceSel(str);//追加

}

好了,以上两种方法任选一种即可。把所有的按钮(当然不包括运算作用的“=”等等了)都这样处理,并且测试成功之后再继续进行。

接下来,就是关键的计算了。这里大家可以用很多方法,比如用数据结构的栈和二叉树,或者自己写计算算法。我数据结构太糟了,只能去看人家写的代码了~~~

首先,按钮的禁用问题我们没解决呢!进制转换的问题也是大问题。我们的进制是用复选框控件实现的。为复选框添加事件,写入代码:

GetDlgItem(IDC_BUTTON28)->EnableWindow(1);。

这句的意思是当复选框被选择是按钮28是可用状态。如果EnableWindow(0)就是不可用状态。大家自己根据自己的按钮顺序自己复制代码吧。比如我的是这样的:

除了0和1外都不能使用。

单文档应用程序的框架窗口是唯一的。单文档界面(SDI),这是充当主应用程序框架窗口以及唯一的文档框架窗口的一个CFrameWnd,框架窗口为应用程序的用户界面提供结构框架,是应用程序的主窗口,负责管理其包容的窗口,一个应用程序的最顶层的框架窗口是应用程序启动时创建的窗口。

以上就是关于C++中的单文档应用程序问题全部的内容,包括:C++中的单文档应用程序问题、应用程序是指什么、MFC单文档应用程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9391102.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存