C++给人的第一感觉便是过于专业化,高深和晦涩。其实也并非如此,在基本掌握了它之后你就会发现,VC++使用起来是很方便的。至于说难,那是有点。但这并非是VC++的过错,而是Windows,这个庞大无比对用户亲切之至却对程序员不那么友好的家伙。再说,VC++系出自名门,微软的哪样东西不是先把你服侍得舒舒服服,然后再把你口袋中的钱掏个精光呢?好,下面就向大家介绍几个在使用中的小技巧。
1.使用中文
VC++从1.5版到现在的6.0版,好像还没有出现过像VB一样的中文版。大概是Microsoft认为能够用VC++编程的人英文水平都很高吧,但这对用户可不行啊。VC++在中文平台下可以使用中文,但编译后那些按钮上的、对话框上的中文都成ASCII码了。何故?因为VC++在安装时是默认按单字节字符安装的,而中文字符是双字节编码,自然就不能正确显示了。要解决这个问题其实也很容易,将VC++光盘上DEVSTUDIO\SHAREDIDE\BIN\IDE路径下的中文资源语言模块Appwzchs.dll拷贝至硬盘DevStudio\SharedIDE\BIN\IDE路
- Visual C++ 编程技巧
我要留言To Comment 阅读全文Read All | 回复Comments() 点击Count()
- 关于CRect类的一点知识
经常看到CRect类的使用,不过不是很熟,在MSDN找了下关于它的介绍:
[From MSDN]
CRect类(矩形类)
无基类
【说 明】CRect类与Windows系统中表示矩形RECT结构相似,并且它还提供了操作RECT结构的成员函数。
在传递LPRECT,LPCRECT或RECT结构作为参数的任何地方,都可以传递CRect类的对象。
注意,这个类是从tagRECT结构派生而来的。(tagRECT是RECT结构的不太常用的别名。)这意味着RECT结构的数据成员(left、top、right和bottom)也是CRect类的对象可以访问数据成员。
一个CRect类的对象包含用于定义矩形的左上角和右下角点的成员变量。当指定一个CRect类的对象时,必须谨慎地构造它,以使它符合规范 也就是说,使其左坐标值小于右坐标值,使顶坐标值小于底坐标值。例如,左上角为(10,10),右下角为(20,20)就定义了一个符合规范的矩形,但是左上角为(20,20)而右下角为(10,10)的值就定义了一个不符合规范的矩形。如果矩形是不符合规范的,则CRect类的对象的许多成员函数都会符合不正确的结果。(参见CRect::NormalizeRect可以得到这些函数的列表。)在你调用一个要求符合规范的矩形的函数之前,你可以通过调用NormalizeRect函数来使不符合规范的矩形成为符合规范的矩形。
当用成员函数CDC::DPtoLP和CDC::LPtoDP来处理CRect类的对象时要小心。如果显示环境的映射模式y-extent是负的,就像在MM_LOENGLISH中一样,则CDC::DPt
我要留言To Comment 阅读全文Read All | 回复Comments() 点击Count()
- 匈牙利表示法
匈牙利表示法:
它通过在每一个表示符名字的前面放置一个数据类型助记符,为程序员提供了对标识符的即时识别。
《1》MFC、句柄、控件及结构的命名规则。
Windows类型 样本变量 MFC类 样本对象
HWND hWnd CWnd* pWnd
HDLG hDlg CDialog* pDlg
HDC hDC CDC* pDC
我要留言To Comment 阅读全文Read All | 回复Comments() 点击Count()
- 窗口的创建
创建一个完整的窗口,需要经过下面几个操作步骤:
设计一个窗口类;
注册窗口类;
创建窗口;
显示及更新窗口。
我要留言To Comment 阅读全文Read All | 回复Comments() 点击Count()
- GetWindowRect,GetClientRect,和ScreenToClient
GetClientRect() 得到的是在客户区坐标系下的RECT(即以所在窗口左上角为原点,去掉了标题栏计算,仅仅是个大小,返回值的左上角永远为0,0)
ScreenToClient() 就是把屏幕坐标系下的RECT坐标转换为客户区坐标系下的RECT坐标。
我的总结:
如果需要获得窗体在屏幕上的位置,使用GetWindowRect
如果需要获得窗体的大小,使用GetClientRect
第一个函数获得的是窗口在屏幕上的位置,得到的结果可能是这样CRect(10,10,240,240);
第二个函数和它不同,它只获得了客户区的大小,因此得到的结果总是这样CRect(0,0,width,height);
&是引用,只是传递的地址。不加就是把值复杂到新的地址去了。
加&与不加&可就完全不一样了。
如果不加,那么只是进行值传递,在GetWindowRect函数内部,会为这个rect