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. Linux下搭建企业共享目录方案之------samba

    Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成.SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通 ...

  2. 揭秘 Python 中的 enumerate() 函数

    原文:https://mp.weixin.qq.com/s/Jm7YiCA20RDSTrF4dHeykQ 如何以去写以及为什么你应该使用Python中的内置枚举函数来编写更干净更加Pythonic的循 ...

  3. php删除制定文件及文件夹

    php遍历一个文件夹内的所有文件和文件夹,并删除所有文件夹和子文件夹下的所有文件的代码,通过递归方式实现达到清空一个目录的效果,代码简单实用. 用到的函数: scandir($path) 遍历一个文件 ...

  4. thinkPHP使用函数时字符串中不能含有管道符”|“,否则报错;

    如 {$data.name|str_repeat="|",###}报错!!!

  5. 年薪30万的Android程序员必须知道的帖子

    https://github.com/Trinea/android-open-project

  6. linux下创建具有root权限的账户

    http://blog.chinaunix.net/uid-24631445-id-2981034.html

  7. 利用iWARP/RDMA解决以太网高延迟

    导读:“iWARP能够带来超低延迟.”据介绍,RDMA,即远程直接内存访问提供了应用程序到应用程序的直接通信能力,这也就意味着,应用将跳过操作系统,实现远程内存应用程序的访问 关键词: iWARP 低 ...

  8. 设置myeclipse文件的打开格式

  9. VB.Net条形码编程的方法

    一.条形码的读取用过键盘口式的扫条码工具的朋友就知道,它就如同在鍵盘上按下数字鍵一样,基本不需任何编程和处理.但如果你使用的是其它接口的话,可能你就要为该设备编写通讯代码了.以下有一段简单的25针串口 ...

  10. 决策树与树集成模型(bootstrap, 决策树(信息熵,信息增益, 信息增益率, 基尼系数),回归树, Bagging, 随机森林, Boosting, Adaboost, GBDT, XGboost)

    1.bootstrap   在原始数据的范围内作有放回的再抽样M个, 样本容量仍为n,原始数据中每个观察单位每次被抽到的概率相等, 为1/n , 所得样本称为Bootstrap样本.于是可得到参数θ的 ...