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的更多相关文章

  1. MFC中的一般经验之谈4

    MFC中的窗口控件,都是从CWnd类中继承的.MFC以及ResourceEditor支持的所有控件称为标准控件. 在对话框资源文件夹下,然后邮件新建添加新对话框,新建对话框后要在资源视图中的对话框文件 ...

  2. MFC中的一般经验之谈3

    Window消息可以分为三类:(1)标准Window消息(CWnd子类处理),(2)控制通知消息(CWnd子类处理),(3)命令消息(应用中的5类都可以).所有派生自CCmdObjec对象的类都可以处 ...

  3. MFC中的一般经验之谈2

    MFC一般类成员m_iAge,命名原则,且MFC中类定义以C开头原则,这些原则便于理解以及增强代码的可读性.MFC是一个用窗口作为用户交互的方式,一般框架类.视图类.以及窗口上的控件都是继承CWnd类 ...

  4. MFC中的一般经验之谈----OnInitialUpdate

    在MFC程序设计中,按照传统的设计,如果处理WM_PAINT消息,一般会派生一个OnPaint函数,映射到WM_PAINT消息上进行绘图处理.但是很多程序中并没有出现OnPaint,一个OnDraw函 ...

  5. MFC中使用FLASH

    一.准备工作 第一步:下载并安装Adobe Flash Player. 从官方网站(http://get.adobe.com/cn/flashplayer/)上下载最新的Flash Player(大约 ...

  6. MFC中换行实现

    在mfc中编辑框允许输入多行时,换行符被表示为<归位><换行>即"\r\n",用ascii码表示为13 10 如果为编辑框中想要输入换行,就请将编辑框的属性 ...

  7. MFC中的各种DC区别

    转载自:xntop的<区别MFC中的CClientDC.CWindowDC.CPaintDC.CMetaFileDC> CClientDC及其子类 1. CClientDC类只能在客户区绘 ...

  8. VC++ MFC中如何将应用程序的配置信息保存到注册表中(二)

    在上一篇中介绍了几个写入注册表数据和读取注册表数据的接口,并介绍了使用方法. 这一片教你如何使得你的应用程序在下次打开时保持上一次关闭前的状态. 在上一篇添加的代码的基础上,要添加WM_CLOSE消息 ...

  9. MFC中对话框类(Dialog)的应用

    转载http://hi.baidu.com/jackywdx/item/feee8041d2c2e12310ee1e85 Windows应用程序通常是通过对话框接收用户输入.向用户输出信息,本节介绍应 ...

随机推荐

  1. PHP 设计模式 原型模式(Prototype)之深/浅拷贝

      看PHP 设计模式 原型模式(Prototype)时,衍生出一个扩展问题之 原型拷贝的浅拷贝和深拷贝问题(不管写Java还是写PHP还是写JS时都多多少少遇到过对象拷贝问题)   比如写前端页面时 ...

  2. Oracle 表空间查询与操作方法

    一.查询篇 1.查询oracle表空间的使用情况 select b.file_id 文件ID,  b.tablespace_name 表空间,  b.file_name 物理文件名,  b.bytes ...

  3. 利用WeX5给手机APP增加短信验证码功能

    帖子来源:http://bbs.wex5.com/thread-70908-1-1.html 遇到一个手机APP项目客户要求注册到APP上的用户手机号必须是真实的通过X5平台整合短信发送平台接口完成了 ...

  4. CFGym 101158B(巨坑题)

    前言:无话可说,看懂题意就没什么难度了. 题意:对于[0, 9999]区间内的每一个数b,通过输入的转换表,得到一个e值,把这个值添加到b的后面,得到一个五位数c.对于c的每一位,从0枚举到9,得到5 ...

  5. 安装配置Android开发环境SDK

    引言: 好搞事情,搞点移动端测试高大尚的东西,首先先得把环境搭建起来: 1.下载 握了个草,很多网站都直接推荐到android官网去下载,叔不知google官网早就被我大天朝给墙了,对于不喜欢FQ的天 ...

  6. python beautifulsoup爬虫

    爬虫这个听起来很 hack 的名字,是我学习 python 的诱因.当 python 基础学习到一定程度(基本语法,数据类型掌握) 就可以开启自己的小爬虫了.毕竟实践才是提高的最快途径.废话说完了,下 ...

  7. angularjs之$ajax请求

    AngularJS不仅仅只有双向绑定等等功能,还有发送Ajax请求的Api. 效果图: 请求的文件(data.php): <?php $data = [ '股市下跌', '清明小长假结束', ' ...

  8. php使用curl库进行ssl双向认证

    官方文档: http://www.php.net/manual/zh/function.curl-setopt.php#10692 官方举例: <?phpcurl_setopt($ch, CUR ...

  9. linux学习(别人指出来的), 回头有针对性的学下!

    应该是 会linux 基本操作吧linux 安装 lamp lnmp php拓展这些基本都得会把知道subversion 和 github 这俩吧windows的代码同步到linux上无需ftp 会跟 ...

  10. D3D-GetBackBuffer &GetFrontBufferData 抓屏&D3D抓取GPU数据

    HRESULT GetBackBuffer( [in]          UINT                iSwapChain, [in]          UINT              ...