MFC对话框程序基础复习001
2011年04月23日
对话框基础复习一 2011.4.21
对话框有两种:
一种是模态对话框(Modal['məudl]),其中模态对话框显示时候,程序的其他的在对话框之外都不可操作,只有关闭了模态对话框才可以继续操作,例如文本工具的“打开对话框”。
一种是非模态对话框(Modeless),非模态对话框跟用户对程序其他操作没有影响,例如文本工具的“查找对话框”。
MFC中对资源的操作都是通过一个与资源相关的类来完成的。
模态对话框用DoModal来显示,非模态对话框用Create来生成,用ShowWindow来显示。
指针是在堆上分配内存的,和程序的整个生命周期一致(假设你不主动注销)。
void CEasyDialogView::OnDialog()
{
// TODO: Add your command handler code here
CTestDlg *pTestDlg = new CTestDlg();
pTestDlg->Create(IDD_DIALOG1, this);
pTestDlg->ShowWindow(SW_SHOW);
}
这样是可以显示出Modaless对话框的,但是,这个函数的生命周期结束之后,pTestDlg销毁了,你就找不到刚才分配出来的内存空间了。
查MSDN可知道,在Modaless对话框的“OK”按钮并不会销毁窗口,要重写OnOK函数在其中加入DestroyWindow才能使得窗口销毁。
其中IDC_STATIC 这个ID号是规定了用来标识一些静态的做标识的文本的,所以在ClassWizard中看不到它,所以要操作的话就要改成其他的ID号。想要静态文本响应鼠标的消息,就要在属性对话框中选中Notify选中。
逗号表达式:用逗号来隔开多个表达式,整个逗号表达式的值就是最后一个表达式的值。
获取一个Item里的文本或数据的信息的函数有如下:
GetDlgItem()->GetWindowText();
GetDlgItemText()
GetDlgItemInt()
可以用 关联控件值(value)变量 来对进行特定的操作,如文本输入框的文本。
直接操作关联的控件值变量是没有效果的,因为没有进行控件的updata操作。
所以要在头尾加上UpdateData(TURE)和UpdateData(FALSE)函数。
UpdateData(TURE)表明当前函数正在获取控件的数据。
UpdateData(FALSE)表名当前函数已经在初始化控件的数据了。
关联控件控制(control)变量 是对控件本身的对象的关联,操作这个变量就是操作了控件的本身,所以不用Update也行。
mfc提供了 DDX - Dialog Data Exchange 对话框数据交换
DDX - Dialog Data Validation 对话框数据校验
这些函数是一DDX_ DDV_作前缀的。
可以用消息来对控件来进行操作。例如:文本框的操作
WM_GETTEXT, WM_SETTEXT
设置文本框的复选部分:EM_GETSEL, EM_SETSEL
①::SendMessage()
②用本身关联的空间控制变量来使用如:m_edit.SendMessage();
③SendDlgItemMessage()直接向Item发送消息
SendMessage 与 PostMessage的区别
PostMessage只负责将消息放到消息队列中,不确定何时及是否处理
SendMessage要等到受到消息处理的返回码(DWord类型)后才继续
PostMessage执行后马上返回
SendMessage必须等到消息被处理后才会返回。
GetWindowRect 是用来获取窗口的矩形区域。
IsRectNull 判断区域是否为空
SetWindowPos/DeferWindowPos 设置窗口的位置
BingWindowToTop 把窗口置于顶层
SetForegroudWindow 设置前台窗口
SetWindowLong 可以用来设置窗口的属性
LONG SetWindowLong(
HWND hWnd, // handle to window
int nIndex, // offset of value to set
LONG dwNewLong // new value
);
当 nIndex 为 GWL_WNDPROC就可以重设一个窗口过程,返回先前的窗口过程,设置一个窗口过程,就可以响应一些别的消息
SetFocus 设置窗口的焦点
GetNextWindow 可以获取下一个窗口的句柄
GetWindow 获取特定关系的窗口句柄,包含上面的
GetNextDlgTabItem 获取下一个 可获取tab键转移的 Item
在控件属性页里 有个 Tab Stop 可以选,转中后就可以转移到这个按键
在 Layout菜单 中的TabOrder 选项选中,就可以设置tab的顺序了,很方便。
编辑框 不选中 多行 MultiLine 是不会响应回车消息的。
在MFC生成的对话框程序里,默认OK 按钮,默认回车按钮的ID就是IDOK(指没有设置DefaultButton的时候)。
发表评论
-
VBS脚本常用经典代码收集
2012-01-20 01:29 787VBS脚本常用经典代码收集 2010年06月21日 1. ... -
Flex文件上传
2012-01-20 01:29 723Flex文件上传 2010年06月06日 今天花了一点时 ... -
Flex + BlazeDS 学习笔记 (一) --- BlazeDS的功能原理及配置实例
2012-01-20 01:29 709Flex + BlazeDS 学习笔记 (一) --- Bla ... -
Flex与.net交互
2012-01-20 01:29 642Flex与.net交互 2010年07月14日 方法一: ... -
vb+Flex的关于FlashPlayer的检测
2012-01-20 01:29 581vb+Flex的关于FlashPlayer的 ... -
liunx编译android源码参考
2012-01-19 09:19 642liunx编译android源码参考 2011年10月20日 ... -
RHEL使用Centos的YUM源
2012-01-19 09:19 738RHEL使用Centos的YUM源 2011年11月04日 ... -
RedHat 6.0使用CentOS YUM源更新的方法
2012-01-19 09:19 1168RedHat 6.0使用CentOS YUM源更新的方法 2 ... -
Google Chrome涉及到开源代码列表
2012-01-19 09:19 1053Google Chrome涉及到开源代码列表 2010年07 ... -
ubuntu速配指南之热门设置
2012-01-19 09:19 777ubuntu速配指南之热门设 ... -
VS6.0安装总结(重启开机dll文件提示找不到的解决办法)
2012-01-17 01:53 2230VS6.0安装总结(重启开机d ... -
西门子网络问题解答
2012-01-17 01:53 2156西门子网络问题解答 2011年07月20日 SIMATI ... -
System32下每个DLL的作用
2012-01-17 01:53 1996System32下每个DLL的作用 ... -
2011-10-10program
2012-01-17 01:53 4622011-10-10program 2011年10月10日 ... -
Flex Builder3+FDT3 环境配置
2012-01-15 21:03 657Flex Builder3+FDT3 环境配置 2010年0 ... -
在Eclipse下使用Ant编译Flex程序
2012-01-15 21:03 644在Eclipse下使用Ant编译Flex程序 2010年04 ... -
什么是RIA AIR Flex,给你一次扫盲个够
2012-01-15 21:03 620什么是RIA AIR Flex,给你一次扫盲个够 2009年 ... -
Flex超酷皮肤主题推荐
2012-01-15 21:03 769Flex超酷皮肤主题推荐 2009年07月29日 当程序 ... -
学习Flex 和BlazeDS的十三个理由
2012-01-15 21:03 604学习Flex 和BlazeDS的十三 ...
相关推荐
本篇文章主要涵盖了MFC的基础知识,包括面向对象概念、对话框、消息处理、计时器、绘图操作、程序设计以及特定代码的功能分析。 1. 面向对象概念: 面向对象编程是MFC的核心,主要涉及类的封装性、继承性和多态性。...
【标题】:“基于MFC的计算器程序” 在编程领域,MFC(Microsoft Foundation Classes)是微软为Windows应用程序开发提供的...这是一个基础但全面的实践项目,适合初学者入门,也对有经验的开发者具有复习和巩固价值。
在MFC(Microsoft Foundation Classes)Windows应用程序设计中,文件处理机制和对话框是两个重要的知识点。下面是关于这两个主题的详细说明: **文件处理机制** 1. **序列化(Serialization)**:序列化是MFC中...
【MFC-Windows应用程序设计复习题】主要涵盖了MFC(Microsoft Foundation Classes)框架下Windows应用程序的文件处理机制和对话框操作。MFC是Microsoft提供的一套C++库,用于简化Windows应用程序开发。 1) **文件...
5. **Visual C++MFC入门教程**:适合初学者,可能包含MFC的基础知识,如创建第一个MFC应用、控件的使用、对话框编程、菜单和工具栏的创建等,为读者构建扎实的MFC编程基础。 6. **CHM格式的孙老师VC笔记和一些资料*...
1. **框架类**:MFC中的框架类是整个应用程序的基础,它们提供了事件处理、消息映射等关键功能。例如,CWinApp类代表一个应用程序,CWnd类代表窗口,CDialog类代表对话框。 2. **消息映射**:MFC使用消息映射机制将...
本计算器项目是基于MFC和Visual Studio 2008进行开发的,它展示了如何利用MFC对话框来构建一个功能完备的计算器应用。本文将深入探讨这一项目中的关键技术和知识点。 首先,MFC对话框是用户界面的核心。在MFC中,...
此外,还涉及了MFC(Microsoft Foundation Classes)程序设计框架,包括对话框、菜单、工具栏和状态栏的设计,这些都是实际应用中常见的界面元素。 学习C++需要理解和掌握课程内容,认真完成作业和实验,频繁的上机...
总之,"Windows应用程序设计(C#)mfc mcp考证题库"是一个针对MCP认证考试的复习资源,涵盖了C#编程、Windows应用程序设计和相关理论知识。考生可以通过深入学习和实践,提升自己的技能水平,顺利通过考试,成为微软...
4. **MFC框架**:MFC提供了一系列的类,用于构建Windows应用程序,包括窗口、对话框、控件、文档/视图架构等。通过学习MFC,你可以快速创建具有专业外观的Windows GUI程序。 5. **MFC编程实践**:学习如何使用MFC...
VS2010 MFC经典教程是一套全面的教程,涵盖了在Visual Studio 2010环境中使用Microsoft Foundation Classes (MFC)进行C++程序设计的基础和深入知识。MFC是一个为简化Windows应用程序的开发而提供的一个C++库。下面将...
学习MFC不仅可以提升Windows程序设计能力,还能够为理解其他微软技术如ATL(Active Template Library)和COM(Component Object Model)打下坚实基础。在实际项目开发中,结合MFC的灵活性和Windows API的强大功能,...
《Windows程序设计复习...以上内容涵盖了Windows程序设计的基本概念和MFC库的使用,包括程序启动、用户交互、绘图、资源管理等方面,是复习和学习的关键点。理解并掌握这些知识点,对于编写Windows应用程序至关重要。
【Windows程序设计】知识点详解 ...这些知识点涵盖了Windows程序设计的基础,包括项目文件管理、MFC框架、消息处理、设备上下文、绘图对象、以及对话框和菜单的使用等方面,是学习Windows程序设计的重要组成部分。
《超级简单调色板程序——基于MFC与VS...对于想要学习或复习MFC和Windows GUI编程的开发者,这是一个不错的实践项目。通过分析和改进这个程序,可以进一步掌握MFC类库的应用,以及提高在图形用户界面设计方面的技能。
### MFC基础知识与应用 #### 1. 类与成员访问控制 在MFC(Microsoft Foundation Classes)及VC++开发环境中,类是程序设计的基本单元。类中的成员分为`public`(公有)、`protected`(受保护)和`private`(私有)...
从给定的VC++程序设计复习题中,我们可以提炼出一系列关键知识点,这些知识点涵盖了C++面向对象编程的基础,特别是与Microsoft Visual C++ (VC++) 和 Microsoft Foundation Classes (MFC) 相关的重要概念和技术。...
2. **C++基础**:复习C++语言的基础知识,如变量、数据类型、控制结构、函数、类和对象等,这是使用VC进行编程的基础。 3. **MFC库介绍**:讲解MFC库的设计理念和架构,它是微软为简化Windows应用程序开发而创建的...
MFC,全称为Microsoft Foundation Classes,是微软提供的一套C++类库,用于构建Windows应用程序。...对于初学者来说,这是一个很好的学习资源,对于有经验的开发者来说,这也是一个复习和提升MFC技能的好材料。