Profilo扑拉扑拉FotoBlogElenchi Strumenti Guida

Blog


06 giugno

要开始工作了

两个月后又开始工作了,生活又开始规律了,但愿这次别在胖了!
nnd这公司要求还挺多,要签三方,还有什么劳动合同解除证明……头疼。
他们要的身份证我也给弄丢了,害得的大爷昨天跑了一下午,给我热得够呛!才弄了张证明。待会儿还得查查公交,明天的赶早坐公交到安贞去等班车!
新的工作新的开始,bless!
01 giugno

Linux 安装成功 bless

久违的linux终于被安装上了!虽然是老版的RedHat 7.1。
mmd,为了能学习linux操作系统费老了劲了!
   工作日志:
   先装fedora 4 失败。
   更新主板bios。
   再装失败。
   百度搜索,到该主板制造商网站查询,打电话到该主板北京技术支持中心,得知可装RedHat9.
   开始搜罗RedHat得安装盘,只找到一个RedHat7.1。
   安装通过,没有显卡驱动。
   从校ftp上download下该显卡的驱动。
   阅读新的安装说明,更改X Window配置文件多次失败,在更改之……
直到今天上午,终于...终于....见到了那可爱的小红帽!
那是相当的激动,足足捣鼓了三天,辛辛苦苦的三天啊,终于在这个“破“主板(以前被定性为不能安装)上安装成功。
这两天的最大的收获就是:做事一定要有足够的耐心和毅力!
hoho,剩下该做就是好好学习Linux啦,过不了多长时间,俺的简历上就该添加上:熟悉Linux操作系统,精通Linux下的C/C++编程。
bless again!
14 marzo

win32编程

Win32编程基础-vc++编程指南

2.3.5 Win32编程基础

Win32数据类型

这里的数据类型指的是一些关键字,这些关键字定义了Win32中的函数中的有关参数和返回值的大小和意义。Win32常用的数据类型有:

 

数据类型 描述
HANDLE 定义一个32位无符号的整数,用作句柄
HINSTANCE 定义一个32位的无符号整数,用作实例句柄
HWND 定义一个32位的无符号整数,用作窗口句柄
HDC 一个设备描述背景的句柄
LONG 说明一个32位带符号整数
LPSTR 定义一个线性的32位字符串指针
UINT 定义一个新的Win32数据类型,它会把一个参数强制转换成Windows3.x应用中的16位值或Win32应用中的32位
WCHAR 说明一个16位的UNICODE字符,用来表示世界上所有已知的书写语言的符号

 

 

这里需要解释一下的是句柄。句柄是Windows编程的一个关键性的概念,编写Windows应用程序总是要和各种句柄打交道。所谓句柄,就是一个唯一的数,用以标识许多不同的对象类型,如窗口、菜单、内存、画笔、画刷、电话线路等。在Win32里,句柄是指向一个“无类型对象”(void*)的指针,也就是一个4字节长的数据。无论它的本质是什么,句柄并不是一个真正意义上的指针。从构造上看,句柄是一个指针,尽管它没有指向用于存储某个对象的内存位置。事实上,句柄指向一个包含了对该对象进行的引用的位置。句柄的声明是这样的:

typedef void *HANDLE

由于Windows是一个多任务操作系统,它可以同时运行多个程序或一个程序的多个副本。这些运行的程序称为一个实例。为了对同一程序的多个副本进行管理,Windows引入了实例句柄。Windows为每个应用程序建立一张表,实例句柄就好象是这张表的一个索引。

Windows不仅使用句柄来管理实例,也用它来管理窗口、位图、字体、元文件、图标等系统资源。

标识符命名

在编程时,变量、函数的命名是一个极其重要的问题。好的命名方法使变量易于记忆且程序可读性大大提高。Microsoft采用匈牙利命名法来命名Windows API函数和变量。匈牙利命名法是由Microsoft的著名开发人员、Excel的主要设计者查尔斯·西蒙尼在他的博士论文中提出来的,由于西蒙尼的国籍是匈牙利,所以这种命名法叫匈牙利命名法。

匈牙利命名法为C标识符的命名定义了一种非常标准化的方式,这种命名方式是以两条规则为基础的:

1.标识符的名字以一个或者多个小写字母开头,用这些字母来指定数据类型。下表列出了常用的数据类型的标准前缀:

在Windows里定义数据类型的一些标准前缀

前缀 数据类型

c 字符(char)
s 短整数(short)
cb 用于定义对象(一般为一个结构)尺寸的整数
n 整数(integer)
sz 以’\\0’结尾的字符串
b 字节
i int(整数)
x 短整数(坐标x)
y 短整数(坐标y)
f BOOL
w 字(WORD,无符号短整数)
l 长整数(long)
h HANDLE(无符号int)
m_ 类成员变量
fn 函数(function)
dw 双字(DWORD,无符号长整数)

2.在标识符内,前缀以后就是一个或者多个第一个字母大写的单词,这些单词清楚地指出了源代码内那个对象的用途。比如,m_szStudentName表示一个学生名字的类成员变量,数据类型是字符串型。

从16位的Win16 API迁移到Win32 API注意点

1.数据类型字长的变化:

我们编写一个小程序来说明Win32下的常见数据类型的字长:

#include

#include

void main(void)

{

printf("sizeof(int) is %d\\n",sizeof(int));

printf("sizeof(BYTE) is %d\\n",sizeof(BYTE));

printf("sizeof(WORD) is %d\\n",sizeof(WORD));

printf("sizeof(DWORD) is %d\\n",sizeof(DWORD));

printf("sizeof(LONG) is %d\\n",sizeof(LONG));

printf("sizeof(PVOID) is %d\\n",sizeof(PVOID));

printf("sizeof(LPVOID) is %d\\n",sizeof(LPVOID));

}



使用Visual C++编译运行该程序,输出结果如下:

sizeof(int) is 4

sizeof(BYTE) is 1

sizeof(WORD) is 2

sizeof(DWORD) is 4

sizeof(LONG) is 4

sizeof(PVOID) is 4

sizeof(LPVOID) is 4


从上面的输出结果我们看到:整数类型字长已经同长整数相同,PVOID近指针和LPVOID远指针长度也相同。在编程过程中,我们要注意这些变化,凡是设计字长的问题最好还是采用可以移植的sizeof操作符来做。

2.内存模式变化:

在Win32平台下,不再有微模式、紧凑模式、中模式、大模式、巨模式、自定义内存模式之分,也不再有64KB代码段和数据段的限制。只有一种内存模式,Win32下的地址和代码均在线性寻址的2GB的32位内存空间中。当然,编程时还是要考虑到实际内存限制的。

3.类型修饰符:

在Win32下,不再有远指针、近指针、巨型指针之分,三种指针类型完全相同。32位的编译器会忽略所有的_near、_far、_huge关键字并一视同仁来处理。在Win32中,象LPSTR和PSTR这种类型是等价的。

4.函数的变化:

Win32API设计时尽可能保证与Win16API兼容,但是仍然对一些函数作了修改。比如在Win16下的MoveTo在Win32下为MoveToEx。如果在编译程序时某个API函数没找到,试着在这个函数名后面加上Ex,Ex表示它是Win16的扩展。