MFC中关闭窗口的几种办法+MFC中MessageBox的用法

MFC中关闭窗口的几种办法:

退出程序用AfxGetMainWnd()->SendMessage(WM_CLOSE);

关闭当前窗口用DestroyWindow( );

关闭模式对话框用EndDialog(0);

MFC中MessageBox的用法

消息框是个很常用的控件,属性比较多,本文列出了它的一些常用方法,及指出了它的一些应用场合。
1.
MessageBox("这是一个最简单的消息框!");
2.
MessageBox("这是一个有标题的消息框!","标题");
3.
MessageBox("这是一个确定 取消的消息框!","标题", MB_OKCANCEL );
4.
MessageBox("这是一个警告的消息框!","标题", MB_ICONEXCLAMATION );
5.
MessageBox("这是一个两种属性的消息框!","标题", MB_ICONEXCLAMATION|MB_OKCANCEL );

6.
if(MessageBox("一种常用的应用","标题",MB_ICONEXCLAMATION|MB_OKCANCEL)==IDCANCEL)
return;

附其它常用属性

系统默认图标,可在消息框上显示
X错误 MB_ICONHAND, MB_ICONSTOP, and MB_ICONERROR
?询问 MB_ICONQUESTION
!警告 MB_ICONEXCLAMATION and MB_ICONWARNING
i信息 MB_ICONASTERISK and MB_ICONINFORMATION

按钮的形式
MB_OK 默认
MB_OKCANCEL 确定取消
MB_YESNO 是否
MB_YESNOCANCEL 是否取消

返回值
IDCANCEL 取消被选
IDNO 否被选
IDOK 确定被选
IDYES 是被选

MFC 文本框 用法

//获得EDIT

CEdit* pBoxOne;

pBoxOne = (CEdit*) GetDlgItem(IDC_EDIT1);

//付值

pBoxOne->SetWindowText( _T"FOO" );

//取值

CString str;

pBoxOne->GetWindowText(str);

GetDlgItem(IDC_EDIT1)->SetWindowText( _T"FOO" );

也可以

//取值

CString str;

GetDlgItem(IDC_EDIT1)->GetWindowText(str);

EditControl是在MFC对话框中最频繁的使用的控件之一

VC++2005提供EditControl的属性和控件事件操作简单方便

1只允许输入数字

如果设置EditControl中只能输入数字,在VC6.0中需要编写一个派生类来达到目的,而在VC++2005下只需要在属性对话框中将Number的属性值设

为True就可以了.

2获取EditControl的内容

两种方法

第一种,利用MFC应用程序向导生成一个基于对话框的应用程序,从资源视图中选择该Dialog窗体,利用右侧的工具箱,向Dialog内添加一个

EditControl项,声明控件变量的类别为Value,变量类型为CString,变量名为m_sEdit_Content.

CString m_sEdit_Content;

CString s;

UpdateData(true);

s=m_sEdit_Content.GetString();

MessageBox(s,_T("获取编辑框的内容"),MB_OK);

s.ReleaseBuffer();

这样就取得了编辑框的内容

UpdateData(true);这句代码很重要,它的作用是将输入的数据装入EditControl对应的变量m_sEdit_Content中.

由于MFC应用程序向导默认是使用Unicode库,所以MessageBox中的字符串需要用_T(),否则会出现const char[]转换LPCTSTR错误,如果不使用

Unicode库就不需要_T().

第二种方法

声明控件变量的类别为Control,变量类型为CEdit,变量名为m_Edit_Content.

代码如下(Unicode)

CString s;

s.GetBufferSetLength(1024);

m_Edit_Content.GetWindowTextW(s.GetBuffer(),s.GetLength());

MessageBox(s,_T("获取文本框的内容"),MB_OK);

s.ReleaseBuffer();

如果不是Unicode下获取编辑框内容的函数就是GetWindowTextA

3将EditControl中的内容转化为整数

在限制编辑框只能数字之后,要将字符串转化为整数

声明控件变量的类别为Value,变量类型为CString,变量名为m_sEdit_Content.

CString s;

UpdateData(true);

s=m_sEdit_Content.GetString();

int n=_tstoi(s);

s.ReleaseBuffer();

n就是所需要的整数

在VC2005下字符串转换成整数需要_tstoi这个函数

4限制编辑框的输入长度

声明控件变量的类别为Control,变量类型为CEdit,变量名为m_Edit_Content.

在对话框初始化的地方写m_Edit_Content.SetLimitText(1);

编辑框就只能输入一个字符了.

时间: 2024-10-12 22:53:56

MFC中关闭窗口的几种办法+MFC中MessageBox的用法的相关文章

使用POST方式弹出窗口的两种办法

使用POST方式弹出窗口的两种办法 最近在做一个功能需要弹窗,但是不能用get方式,因为get方式对url的长度有限制,所以必须用post,总结了两个方法,大家可以参考下 1. 代码如下: var $form1=$("<form action='"+url+"' id='f' name='f' method='post'></form>"); $form1.append($("<input type='hidden' name

delphi中最小化其他程序及所有程序最小化(使用 shell.minimizeAll 和自己寻找窗口这两种办法)

1.所有程序最小化 uses ComObj; var shell : OleVariant; begin shell := CreateOleObject('Shell.Application'); shell.minimizeAll; end; 2.最小化其他程序 spy++ 查找要最小化的程序classname var Indicador :Integer; begin // Find the window by Classname Indicador := FindWindow(PChar

火狐浏览器如何js关闭窗口的几种解决方法

今天在项目上有一个页面要求在几秒后自动关闭,想着还比较简单,用window.close()就可以了,但是用IE/谷歌/火狐浏览器试了一下,发现IE可以,谷歌用网上的兼容方法也可以实现,但是火狐这里卡住了,不能关闭,网上看到的一种兼容代码: function windowclose() { var browserName = navigator.appName; if (browserName=="Netscape") { window.open('', '_self', ''); wi

mongodb清理collection中大量数据的2种办法

1 shell中for循环清理 每次去连接一下mongo, 进行数据的remove操作 echo "Begin ..." >> /root/time.log; echo $(date +%Y-%m-%d-%H:%M:%S) >>/root/time.log; for((i=1;i<=100000000;i++)); do objectid=`/usr/local/mongodb/bin/mongo 127.0.0.1:37017/test -uadmin

Android中关闭应用的三种方式

当应用不再使用的时候,通常需要关闭应用,我们可以使用三种方式关闭android应用: 第一种方式:首先获取当前进程的id,然后杀死该进程(推荐) android.os.Process.killProcess(android.os.Process.myPid()) 第二种方式:终止当前正在运行的Java虚拟机,导致该程序终止 System.exit(0) 第三种方式:强制关闭与该包有关联的一切执行 ActivityManager manager=(ActivityManager) getSyste

mui中的关闭页面的几种方法

一.总结: mui中关闭当前页面的几种方式: 1.swipeBack(暂未测试过) 2.keyEventBind(暂未测试过) 3.给标签的class加.mui-action-back(返回的是前一个页面) 4.也可以直接调用mui.back()方法,实现关闭页面逻辑 例如在实现查询功能的时候,在查询页面输入查询条件,然后返回到列表页面显示查询的结果,用mui.back()返回前面的列表页面 5.在mui.init()方法中加beforeback(可以返回指定页面),这是针对带有返回导航箭头的标

Hibernate 入门 04 - Hibernate中Java对象的三种状态

目录:(后续不断更新...) Hibernate 入门 01 - 框架技术 (介绍Hibernate框架的发展由来) Hibernate 入门 02 - Hibernate介绍及其环境搭建 Hibernate 入门 03 - 使用Hibernate完成持久化操作 Hibernate 入门 04 - Hibernate中Java对象的三种状态 ▁▃▅ Hibernate中Java对象的三种状态▅▃▁ 1. Java对象的三种状态 当应用通过调用Hibernate API与框架发生交互时,需要从持久

如何防止网站被爬虫爬取的几种办法

如何防止网站被爬虫爬取的几种办法 小 中 大 chen 2013-10-08 23:26 Linux 547 次浏览 抢沙发 今天想对一个问题进行分析和讨论,就是关于爬虫对网站页面爬取的问题,有些网站通过爬虫去采集其它的网站页面信息作为己用,大量的爬取行为会对web服务器有比较性能有影响,主要的表现就是会变得很慢. 对于如何防止网站被爬取,我想从以下几种方法去分析: 1.基于程序本身去防止爬取:作为爬虫程序,爬取行为是对页面的源文件爬取,如爬取静态页面的html代码,可以用jquery去模仿写h

[转]MFC子线程中更新控件内容的两种办法

一.概述 每个系统中都有线程(至少都有一个主线程),而线程最重要的作用就是并行处理,提高软件的并发率.针对界面来说,还能提高界面的响应能力.一般的,为了应用的稳定性,在数据处理等耗时操作会单独在一个线程中运行,而所有与主UI线程有关的控件数据刷新应该到主UI线程中处理.也就是数据处理线程发消息,让界面UI去更新控件.在MFC中线程分为界面线程和工作者线程,界面实际就是一个线程画出来的东西,这个线程维护一个"消息队列","消息队列"也是界面线程和工作者线程的最大区别,