MFC中的一般经验之谈5
MFC中提供了CString的类,可以用在一切使用字符串的地方。可以完美取代const char* 或者 LPCTSTR(经常在WinAPI)中传递参数。并且如果需要通过空间进行字符串的数据传递DDX机制,则必须通过CString类型传递。
使用编辑框控件
添加对话框上的编辑框下的控件类型,通过如下类向导的方式:将控件ID与控件类型的成员变量关联。在类别中定义的是空间类别,或者是值类别。注意如果是值类别的时,则需要定义如果使用string类型,则必须使用CString类型。
序列化与反序列化
序列化 (Serialization)将对象的状态信息转换为可以存储或传输的形式的过程。在序列化期间,对象将其当前状态写入到临时或持久性存储区。以后,可以通过从存储区中读取或反序列化对象的状态,重新创建该对象。
序列化的详细分析概述参考博客:http://www.cnblogs.com/icmzn/articles/5724422.html
对话框的初始化
CWnd:: BOOL UpdateData( BOOL bSaveAndValidate = TRUE );
如果调用的时候:FALSE,使用当前的空间变量初始化对话框中的空间(初始化对话框)。 TRUE(默认):则取回控件的参数到关联参数中(参数检索)。
当一个模式对话框在 CDialog::OnInitDialog的默认实现时,创建该框架将自动调用 UpdateData 和 bSaveAndValidate 设置为 FALSE。 在对话框中,可见之前,调用发生。 CDialog::OnOK 的默认实现调用与 bSaveAndValidate 的此成员函数设置为 TRUE 检索数据,并且,如果成功,将关闭对话框。 (如果取消按钮在对话框中单击,对话框关闭的不检索的数据。)
也可以实时调用,跟新对话框参数与空间关联成员的数据流向。
CWnd::GetCapture
函数原型:static CWnd* PASCAL GetCapture( );
标识具有鼠标捕获的窗口。 如果窗口不具有鼠标捕获,它是 NULL。只有一个窗口在任何给定时间具有鼠标捕获。 当 SetCapture 成员函数调用时,窗口收到鼠标捕获。
bool bOwnCapture(void) { return GetCapture()==this; };//判定当前窗口是否补货鼠标
CWnd::SetCapture
不管光标的位置(即使不在本窗口的区域),使所有后续鼠标输入发送到当前 CWnd 对象。目的是当前线程的窗口对后续的所有鼠标形成独占。这样后续所有的GetCapture()==this 结果都是true,指向本身Wnd对象。
当 CWnd 不再需要任何鼠标输入时,应用程序应调用 ReleaseCapture 功能,以便其他窗口可以接收鼠标输入。
BOOL WINAPI ReleaseCapture(void);
在当前线程中释放鼠标捕获。并保存鼠标的正常状态。这样解除当前线程中窗口对鼠标的独占。
SHORT WINAPI GetKeyState( _In_ int nVirtKey);
返回指定Key键的状态,该状态可以确认此键是按下,或者没有按下,或者 toggled。如果是字母或者数字(A through Z, a through z, or 0 through 9),需要指定ASCII的值。如果为其他的按键,则需要使用WIN定义的虚拟按键带啊:如鼠标左键VK_LBUTTON 。
返回short类型,If the high-order bit is 1, the key is down; otherwise, it is up. 即如果最高位为1 位负数则<0, 按下。0,正数,抬起。
HCURSOR WINAPI SetCursor( _In_opt_ HCURSOR hCursor);
设置鼠标的光标的形状。是Win系统API。HCURSOR hCursor必须通过(1)CreateCursor创建,(2)或者LoadCursor加载,(3)或者LoadImage加载。如果为NULL,则光标将从屏幕消失。
只有当屏幕的光标与之前的不同时,这个函数才起作用。光标是公共资源,一个窗口只有窗口获取鼠标进入窗口内部,或者窗口捕获鼠标的时刻进行修改光标形状。
AfxGetApp()->LoadCursor(id),则此ID的光标将可以直接通过setCursor使用。
m_hDefaultCursor=AfxGetApp()->LoadStandardCursor(IDC_ARROW);//默认光标的加载
BOOL WINAPI GetCursorPos( _Out_ LPPOINT lpPoint);
在屏幕坐标系中,返回当前鼠标位置。
void ScreenToClient( LPPOINT lpPoint ) const; void ScreenToClient( LPRECT lpRect ) const;
将屏幕坐标转化为当前窗口的客户区坐标。新坐标是相对于本窗口Wnd的左上角的原点坐标。
GetClientRect(&cr);
获取当前窗口的整个客户区。
endl;
MFC中的一般经验之谈5的更多相关文章
- MFC中的一般经验之谈4
MFC中的窗口控件,都是从CWnd类中继承的.MFC以及ResourceEditor支持的所有控件称为标准控件. 在对话框资源文件夹下,然后邮件新建添加新对话框,新建对话框后要在资源视图中的对话框文件 ...
- MFC中的一般经验之谈3
Window消息可以分为三类:(1)标准Window消息(CWnd子类处理),(2)控制通知消息(CWnd子类处理),(3)命令消息(应用中的5类都可以).所有派生自CCmdObjec对象的类都可以处 ...
- MFC中的一般经验之谈2
MFC一般类成员m_iAge,命名原则,且MFC中类定义以C开头原则,这些原则便于理解以及增强代码的可读性.MFC是一个用窗口作为用户交互的方式,一般框架类.视图类.以及窗口上的控件都是继承CWnd类 ...
- MFC中的一般经验之谈----OnInitialUpdate
在MFC程序设计中,按照传统的设计,如果处理WM_PAINT消息,一般会派生一个OnPaint函数,映射到WM_PAINT消息上进行绘图处理.但是很多程序中并没有出现OnPaint,一个OnDraw函 ...
- MFC中使用FLASH
一.准备工作 第一步:下载并安装Adobe Flash Player. 从官方网站(http://get.adobe.com/cn/flashplayer/)上下载最新的Flash Player(大约 ...
- MFC中换行实现
在mfc中编辑框允许输入多行时,换行符被表示为<归位><换行>即"\r\n",用ascii码表示为13 10 如果为编辑框中想要输入换行,就请将编辑框的属性 ...
- MFC中的各种DC区别
转载自:xntop的<区别MFC中的CClientDC.CWindowDC.CPaintDC.CMetaFileDC> CClientDC及其子类 1. CClientDC类只能在客户区绘 ...
- VC++ MFC中如何将应用程序的配置信息保存到注册表中(二)
在上一篇中介绍了几个写入注册表数据和读取注册表数据的接口,并介绍了使用方法. 这一片教你如何使得你的应用程序在下次打开时保持上一次关闭前的状态. 在上一篇添加的代码的基础上,要添加WM_CLOSE消息 ...
- MFC中对话框类(Dialog)的应用
转载http://hi.baidu.com/jackywdx/item/feee8041d2c2e12310ee1e85 Windows应用程序通常是通过对话框接收用户输入.向用户输出信息,本节介绍应 ...
随机推荐
- sublime text 2 卸载与重装
很多同学使用 sublime text2 的时候,出现一些奇怪的bug,且重启无法修复. 于是,就会想到卸载 sublime text2 再重新安装. 然而,你会发现,重新安装后,这个bug任然存在, ...
- nginx学习1
访问abc.xxx.com就跳转到www.xxx.com/abc.html server { listen 80; server_name abc.xxx.com; rewrite ^.*$ ww ...
- Hive插入数据的几种常用方法
Hive的几种常见的数据导入方式这里介绍四种:(1).从本地文件系统中导入数据到Hive表:(2).从HDFS上导入数据到Hive表:(3).从别的表中查询出相应的数据并导入到Hive表中:(4).在 ...
- 第7课 Qt中的坐标系统
1. 坐标系统 (1)GUI操作系统都有特定的坐标系统 (2)图形界面程序在坐标系统中进行窗口和部件的定位 (3)定位类型 ①顶级窗口部件的定位 ②窗口内部件的定位 ③窗口部件的大小设置 (4)QWi ...
- python之CMDB
浅谈ITIL TIL即IT基础架构库(Information Technology Infrastructure Library, ITIL,信息技术基础架构库)由英国政府部门CCTA(Central ...
- 关于eclipse open call hierarchy功能的一个细节
这个功能对应的快捷键是ctrl alt H,大家应该都很熟悉了.默认是查找这个方法的被调用堆栈.90%的人应该也是习惯这个默认的功能的,也基本无视它的另一个功能. 昨天重启eclipe之后,我的ecl ...
- selenium webdriver——JS对Input执行输入
直接设置value属性, 此方法主要应对输入框自动补全以及readonly属性的element,sendkeys不稳定 比如: Demo:用JS输入 import org.openqa.seleniu ...
- C++Builder 代码编辑器 回车自动补充括弧
两大问题 括弧和折叠 一.括弧 XE7,回车,自动补充括弧} 好用,有时候不准确,代码量多,不知道什么原因就引起错误,总是多一个括弧,一回车就加一个括弧,都不敢回车写代码了,怎么关闭此选项? 找到了, ...
- vs启动项目提示Web 服务器被配置为不列出此目录的内容。
解决方法 确认网站或应用程序配置文件中的 configuration/system.webServer/directoryBrowse@enabled 属性已设置为 true. 配置一下web.con ...
- TCP/IP知识总结(TCP/IP协议族读书笔记一)
一.简述TCP/IP协议 Transmission Control Protocol/Internet Protocol的简写,即传输控制协议/互联网互联协议,又名网络通信协议.是Internet最基 ...