为什么vs2010密钥的输出窗口按回车直接关闭了

vs2010输出窗口问题
[问题点数:20分,结帖人zxg1945]
vs2010输出窗口问题
[问题点数:20分,结帖人zxg1945]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
本帖子已过去太久远了,不再提供回复功能。一个有关问题,用vs2010开发的mfc单文档office Ribbon类型程序,关闭类视图、属性页、输出窗口,就再也打不开了请教大家一个问题,用vs2010开发的mfc单文档office&Ribbon类型程序,关闭类视图、属性页、输出窗口,就再也打不开了
开发环境:&vs2010
程序类型:基于MFC的单文档应用程序、选择了office风格(即Ribbon界面)
&&安装向导建立了一个工程,运行程序,关闭所运行程序界面上的“类视图”、“属性页”、“输出窗口”,
就再也打不开了,重新运行程序也打不开,重新编译运行程序也打不开;
&&请问如何再次打开?需要在什么地方进行设置???
请知道的朋友帮帮忙,谢谢!!!
--参考方法--以“输出窗口”为例,在CMainFrame里有一个成员变量m_wndOutput就是输出窗口。
添加函数和消息映射:
MainFrame.h
afx_msg&void&OnViewOutputWnd();
afx_msg&void&OnUpdateViewOutputWnd(CCmdUI*&pCmdUI);
MainFrame.cpp
ON_COMMAND(ID_VIEW_OUTPUTWND,&&CMainFrame::OnViewOutput)
ON_UPDATE_COMMAND_UI(ID_VIEW_OUTPUTWND,&&CMainFrame::OnUpdateViewOutput)
void&CMainFrame::OnViewOutputWnd()
m_wndOutput.ShowWindow(m_wndOutput.IsVisible()&?&SW_HIDE&:&SW_SHOW);
RecalcLayout(FALSE);
void&CMainFrame::OnUpdateViewOutputWnd(CCmdUI*&pCmdUI)
pCmdUI-&SetCheck(m_wndOutput.IsVisible());
当然还有资源的修改:
其实就是模仿CaptionBar的代码
随机推荐程序问答结果
如对文章有任何疑问请提交到,或者您对内容不满意,请您反馈给我们发贴求解。
,机器学习分类整理更新日期:: 04:26:36
如需转载,请注明文章出处和来源网址:
本文WWW.DOC100.NET DOC100.NET版权所有。我使用VS2010编程,第一次便已运行正确,第二次没编译直接运行,为什么按回车后窗口一闪而过_百度知道
我使用VS2010编程,第一次便已运行正确,第二次没编译直接运行,为什么按回车后窗口一闪而过
我有更好的答案
ctrl F5就可以了
是这样的,我第一次先是按ctrl+F7编译,然后按ctrl+F5运行,再输入数字,回车后就会显示输出数据,这都对,关键就是我想再试一次,但又不想再编译了,就直接按了F5,,,为什么ctrl+F5就可以,直接f5就不行了呢?
因为CTRL F5是调试运行,不同于直接运行。如果想F5执行就可以看到的话需要添加代码,比如添加等待一个字符输入或者什么的。那样的话F5就不会一闪而过,而是等你输入一个字符窗口才会消失。
其他类似问题
为您推荐:
vs2010的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁我用VS2010的时候,发现代码窗口只能打开一个,每次另打开一个项目,前一个就关闭了。_百度知道
我用VS2010的时候,发现代码窗口只能打开一个,每次另打开一个项目,前一个就关闭了。
每次另打开一个项目?好像之前的版本可以啊。俺菜鸟一个,前一个就关闭了?请高人指教我用VS2010的时候。不能像IE一样打开多个选项卡嘛?还是因为控制台应用程序就只能这样,发现代码窗口只能打开一个
提问者采纳
在你编译的时候,点左上角文件——添加——新建项目或者现有项目
提问者评价
其他类似问题
为您推荐:
vs2010的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁& VS2010/MFC编程入门之四十八(字体和文本输出:文本输出)
VS2010/MFC编程入门之四十八(字体和文本输出:文本输出)
&&&&&&&鸡啄米在上一节中讲了,本节主要讲解文本输出的方法和实例。&&&&&& 文本输出过程&&&&&& 在文本输出到设备以前,我们需要确定字体、字体颜色和输出的文本内容等信息。Windows窗口的客户区由应用程序管理,所以我们还要在应用程序中控制输出文本的格式,例如后续字符的位置、换行等格式。&&&&&& 由此,文本的输出过程大致包括确定字体信息、格式化文本和执行输出操作三个步骤。下面分别讲解。&&&&&& 1、确定字体信息&&&&&& 文本在输出以前应该先确定字体信息,或者是当前正在使用的字体,或者是自定义的字体,之后就可以根据确定的字体来显示文本或者利用字体信息来设定文本的格式了,例如,我们可以根据当前字体的字符高度来确定下一行字符在什么位置输出。&&&&&& 自定义字体可以通过CFont类的创建字体的几个成员函数完成。获取当前选择字体的信息可以使用API函数GetTextMetrics实现,此函数的原型如下:&&&&&& BOOL GetTextMetrics(__in&& HDC hdc,__out& LPTEXTMETRIC lptm);&&&&&& 参数hdc为设备上下文的句柄;参数lptm是指向TEXTMETRIC结构体变量的指针,此结构体变量用于接收字体信息。TEXTMETRIC结构体的定义如下:
typedef&struct&tagTEXTMETRIC&{ &&
&&LONG&&tmH&&&&&&&&&&
&&LONG&&tmA&&&&&&&&&&
&&LONG&&tmD&&&&&&&&&
&&LONG&&tmInternalL&&&
&&LONG&&tmExternalL&&&
&&LONG&&tmAveCharW&&&&
&&LONG&&tmMaxCharW&&&&
&&LONG&&tmW&&&&&&&&&&
&&LONG&&tmO&&&&&&&&
&&LONG&&tmDigitizedAspectX;&&&
&&LONG&&tmDigitizedAspectY;&&&
&&TCHAR&tmFirstC&&&&&&&
&&TCHAR&tmLastC&&&&&&&&
&&TCHAR&tmDefaultC&&&&&
&&TCHAR&tmBreakC&&&&&&&
&&BYTE&&tmI&&&&&&&&&&
&&BYTE&&tmU&&&&&&
&&BYTE&&tmStruckO&&&&&&&
&&BYTE&&tmPitchAndF&&
&&BYTE&&tmCharS&&&&&&&&&
}&TEXTMETRIC,&*PTEXTMETRIC;&&&&&&&& 2、格式化文本&&&&&& 格式化文本一般包括两种,一种是确定文本行中后续文本的位置,另一种是确定换行时下一行文本的位置。&&&&&& 确定后续文本的位置&&&&&& 一般我们可以先获取当前字符串的宽度,根据此宽度确定文本行中后续文本的位置。当前字符串的宽度可以通过API函数GetTextExtentPoint32获得。GetTextExtentPoint32函数的原型如下:&&&&&& BOOL GetTextExtentPoint32(__in&& HDC hdc,__in&& LPCTSTR lpString,__in&& int c,__out& LPSIZE lpSize);&&&&&& 参数hdc为设备上下文的句柄;参数lpString为指向文本字符串缓存的指针,此字符串不是必须以结束符结尾的,因为参数c指定了长度;参数c为lpString指向的字符串的长度;参数lpSize为指向SIZE结构体变量的指针,此SIZE结构体变量用于接收字符串的宽度和高度信息。SIZE结构体定义如下:
typedef&struct&tagSIZE&{ &&
&&LONG&&&&&&
&&LONG&&&&&&
}&SIZE,&*PSIZE;&&&&&&&& 已知本字符串的起始水平坐标和宽度,两者相加即是后续文本的起始坐标。&&&&&& 确定换行时下一行文本的位置&&&&&& 由GetTextMetrics函数获取了当前字体的信息并存入TEXTMETRIC结构体后,通过计算当前文本行的垂直坐标、当前字体的高度和行间距之和,就可以得到换行时下一行的垂直坐标。&&&&&& 3、执行文本输出操作&&&&&& 最后,通过API函数TextOut执行文本输出操作。TextOut函数的原型如下:&&&&&& BOOL TextOut(__in& HDC hdc,__in& int nXStart,__in& int nYStart,__in& LPCTSTR lpString,__in& int cbString);&&&&&& 参数hdc为设备上下文的句柄;参数nXStart为起始点x坐标;参数nYStart为起始点y坐标;参数lpString为要输出的文本字符串;参数cbString为字符串中要输出的字符的数量。&&&&&& 当然也可以使用设备上下文类CDC的成员函数TextOut来输出,CDC::TextOut函数的两种重载形式如下:&&&&&& virtual BOOL TextOut(int x,int y,LPCTSTR lpszString,int nCount);&&&&&& BOOL TextOut(int x,int y,const CString& str);&&&&&& 参数x指定文本起始点的x坐标;参数y指定文本起始点的y坐标;参数lpszString为要输出的文本字符串;参数nCount指定字符串中的字节个数;参数str为包含要输出的字符的CString对象。&&&&&& 字体和文本输出的应用实例&&&&&& 鸡啄米下面给大家演示一个简单的关于字体和文本输出的实例。功能就是实现两个字符串分别在水平方向和垂直方向上定时滚动。实现步骤如下:&&&&&& 1、创建一个基于对话框的工程,名字设置为&Example48&。&&&&&& 2、在自动生成的对话框模板IDD_EXAMPLE48_DIALOG中,删除&TODO: Place dialog controls here.&。&&&&&& 3、在Example48Dlg.h文件中为CExample48类添加成员变量:
int&m_nTextX;&&&&&
int&m_nTextY;&&&&&
CFont&m_newF&&&&&
CFont&*m_pOldF&&&&&&&&& 4、在CExample48Dlg类的构造函数中,初始化新添加的成员变量:
CExample48Dlg::CExample48Dlg(CWnd*&pParent&) &&
&&&&:&CDialogEx(CExample48Dlg::IDD,&pParent) &&
&&&&m_hIcon&=&AfxGetApp()-&LoadIcon(IDR_MAINFRAME); &&
&&&&m_nTextX&=&260; &&
&&&&m_nTextY&=&10; &&
&&&&m_pOldFont&=&NULL; &&
}&&&&&&&& 5、在CExample48Dlg对话框初始化函数中,创建新的字体,并开启:
BOOL&CExample48Dlg::OnInitDialog() &&
&&&&CDialogEx::OnInitDialog(); &&
&&&&ASSERT((IDM_ABOUTBOX&&&0xFFF0)&==&IDM_ABOUTBOX); &&
&&&&ASSERT(IDM_ABOUTBOX&&&0xF000); &&
&&&&CMenu*&pSysMenu&=&GetSystemMenu(FALSE); &&
&&&&if&(pSysMenu&!=&NULL) &&
&&&&&&&&BOOL&bNameV &&
&&&&&&&&CString&strAboutM &&
&&&&&&&&bNameValid&=&strAboutMenu.LoadString(IDS_ABOUTBOX); &&
&&&&&&&&ASSERT(bNameValid); &&
&&&&&&&&if&(!strAboutMenu.IsEmpty()) &&
&&&&&&&&{ &&
&&&&&&&&&&&&pSysMenu-&AppendMenu(MF_SEPARATOR); &&
&&&&&&&&&&&&pSysMenu-&AppendMenu(MF_STRING,&IDM_ABOUTBOX,&strAboutMenu); &&
&&&&&&&&} &&
&&&&SetIcon(m_hIcon,&TRUE);&&&&&&&&&&&
&&&&SetIcon(m_hIcon,&FALSE);&&&&&&&&&&
&&&&m_newFont.CreatePointFont(180,&_T(&隶书&)); &&
&&&&SetTimer(1,200,NULL); &&
&&&&return&TRUE;&&&&
}&&&&&&&& 6、修改CExample48Dlg::OnPaint()函数,如果窗口没有最小化就在指定的位置输出文本,即在OnPaint函数中if(IsIconic())对应的else大括号内添加相应代码。CExample48Dlg::OnPaint()函数修改如下:
void&CExample48Dlg::OnPaint() &&
&&&&if&(IsIconic()) &&
&&&&&&&&CPaintDC&dc(this);&&&
&&&&&&&&SendMessage(WM_ICONERASEBKGND,&reinterpret_cast&WPARAM&(dc.GetSafeHdc()),&0); &&
&&&&&&&&&&
&&&&&&&&int&cxIcon&=&GetSystemMetrics(SM_CXICON); &&
&&&&&&&&int&cyIcon&=&GetSystemMetrics(SM_CYICON); &&
&&&&&&&&CRect& &&
&&&&&&&&GetClientRect(&rect); &&
&&&&&&&&int&x&=&(rect.Width()&-&cxIcon&+&1)&/&2; &&
&&&&&&&&int&y&=&(rect.Height()&-&cyIcon&+&1)&/&2; &&
&&&&&&&&&&
&&&&&&&&dc.DrawIcon(x,&y,&m_hIcon); &&
&&&&else&&
&&&&&&&&CPaintDC&dc(this);&&&
&&&&&&&&&&
&&&&&&&&m_pOldFont&=&(CFont*)dc.SelectObject(&m_newFont); &&
&&&&&&&&&&
&&&&&&&&dc.SetBkMode(TRANSPARENT);&&&
&&&&&&&&&&
&&&&&&&&dc.SetTextColor(RGB(255,0,0)); &&
&&&&&&&&&&
&&&&&&&&dc.TextOut(m_nTextX,10,_T(&欢迎来到鸡啄米!&)); &&
&&&&&&&&&&
&&&&&&&&dc.SetTextColor(RGB(0,255,0)); &&
&&&&&&&&&&
&&&&&&&&dc.TextOut(10,m_nTextY,_T(&谢谢关注&)); &&
&&&&&&&&&&
&&&&&&&&dc.SelectObject(m_pOldFont); &&
&&&&&&&&CDialogEx::OnPaint(); &&
}&&&&&&&& 7、在Class View类视图中找到CExample48Dlg,右键点Properties,显示出其属性页,在属性页工具栏上点击Messages按钮,找到WM_TIMER消息,添加消息响应函数CExample48Dlg::OnTimer(UINT_PTR nIDEvent),并在此函数中修改两个文本输出的坐标位置。
void&CExample48Dlg::OnTimer(UINT_PTR&nIDEvent) &&
&&&&LOGFONT&logF &&
&&&&m_newFont.GetLogFont(&logFont); &&
&&&&m_nTextX&-=&5; &&
&&&&if&(m_nTextX&&&10) &&
&&&&&&&&m_nTextX&=&260; &&
&&&&m_nTextY&+=&abs(logFont.lfHeight); &&
&&&&if&(m_nTextY&&260) &&
&&&&&&&&m_nTextY&=&10; &&
&&&&Invalidate(); &&
&&&&CDialogEx::OnTimer(nIDEvent); &&
}&&&&&&&& 到这一步,两个文本就可以分别在水平和垂直方向滚动了。鸡啄米再简单解释下这个过程:程序刚启动时,会调用OnPaint函数,在初始位置绘出两个文本,然后每次到了定时器的定时时间后,会执行OnTimer函数,修改两个文本的坐标值,并通过Invalidate使窗口重绘,又会重新调用OnPaint函数绘制两个文本。这样通过定时修改坐标值就实现了两个文本的滚动效果。&&&&&& 8、运行程序,最终的效果如下图:&&&&&& 好了,本节就讲到这里了,最后的实例大家可以自己丰富下它的功能,看看效果。鸡啄米谢谢大家的支持。
除非特别注明,文章均为原创
转载请标明本文地址:
作者:鸡啄米
&&( 22:53:35)&&( 21:49:7)&&( 19:44:51)&&( 20:19:55)&&( 22:29:21)&&( 21:34:51)&&( 0:13:57)&&( 20:57:7)&&( 21:46:22)&&( 22:23:20)
真的很好的教程!我找这种教程很久了。我花了整整一下午时间把所有的《VS2010/MFC编程入门》制作成了Word,准备打印出来好好学习,同时也期望后面的教程。衷心感谢“鸡啄米”先生的辛勤原创!鸡啄米 于
22:37:36 回复很高兴能帮到你
不错,“刚出锅,热腾腾的”,这几天一直在学,期待后续教程,老师辛苦了。鸡啄米 于
20:12:08 回复经常来啊,就能经常读到刚出锅的了,呵呵
不知道有没有检测U盘和删除U盘的范例呢?
非常感谢楼主,楼主的文章给了我很多启示。虽然现在MFC已经用的不多了,但作为一个坚定的C++学习者,我一直在学,并且相信把MFC理解、运用得好一些,对于理解Windows编程以及理解其它框架都是由帮助的。再次感谢楼主用心写下的文章!最后,向楼主请教一个问题:如何通过对话框将文本分多行输出到视图?我现在的情况是:通过对话框的编辑框输入的回车在视图中显示为双竖线“||”,文本还是按一行输出在视图上(我采用的是文档——视图结构,并且已将对话框的编辑框的want return属性设置为true)。诚盼楼主在百忙之中不吝赐教。
完全随机文章}

我要回帖

更多关于 vs2010密钥 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信