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应用程序通常是通过对话框接收用户输入.向用户输出信息,本节介绍应 ...
随机推荐
- [持续更新]一些zyys的题的集合
Luogu P1119 灾后重建 Sol:对于每个中转点K,需且仅需以此松弛一次 Key words:Floyd,本质活用 考题 路径数 题目描述: Euphemia到一个N*N的药草田里采药,她从左 ...
- (转)SQL SERVER 日志已满的处理方法
本文转载自:http://www.cnblogs.com/eycbest/archive/2012/01/04/2311567.html 事务日志文件Transaction Log File是用来记录 ...
- Java 数组类型转字符串类型
Java手册 String public String() 初始化一个新创建的 String 对象,使其表示一个空字符序列.注意,由于 String 是不可变的,所以无需使用此构造方法. String ...
- HDU 4586 Play the Dice(数学期望)
Play the Dice Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Tot ...
- Splunk安装部署基础篇
Splunk安装(以4.3.4版本为例) 下载splunk软件包,并解压,直接启动即可. --Linux-x86_64.tgz -C /optcd /opt/splunk/bin./splunk st ...
- html页面转换成pdf
一般页面都是.jsp页面,所以要把.jsp转换成html,在生成pdf,在网上找了好多方法,只有用一个插件,wkhtmltopdf-0.8.3.exe,生成的pdf会相对的好看. 先附上我做的.jsp ...
- Ubuntu12.10下Python(pyodbc)访问SQL Server解决方案
一.基本原理 请查看这个网址,讲得灰常详细:http://www.jeffkit.info/2010/01/476/ 二.实现步骤 1.安装linux下SQL Server的驱动程序 安装Free ...
- Poly
folly/Poly.h Poly is a class template that makes it relatively easy to define a type-erasing polymor ...
- 将python源文件打包成exe文件
pyinstaller 库的使用PyInstaller是一个十分有用的第三方库,它能够在Windows.Linux.Mac OS X 等操作系统下将 Python 源文件打包,通过对源文件打包,Pyt ...
- python requests 爬取数据
import requests from lxml import etree import time import pymysql import json headers={ 'User-Agent' ...