Windows API with VC6.0sp6Enterprise

来源:互联网 发布:卡拉卓华软件 编辑:程序博客网 时间:2024/05/28 22:12

A:以下from: http://www.downcc.com/soft/1973.html

Microsoft Visual C++6.0不仅是一个C++ 编译器,而且是一个基于Windows操作系统的可视化集成开发环境(integrated development environment,IDE)。Microsoft Visual C++6.0由许多组件组成,包括编辑器、调试器以及程序向导AppWizard、类向导Class Wizard等开发工具。 这些组件通过一个名为Developer Studio的组件集成为和谐的开发环境。

使用 VC++ 6.0 的一些提示
- 永远记住,使用任何程序(不论是 Word 还是 VC++ 6.0 还是在玩游戏)时,尽可能地频繁保存。相信我,一个死机就够让你抓狂了。
- 写程序之前(即使在还是空文件的时候)就点编译(Compile)(组建(Build)菜单的第一项),如果有问你的对话框就选是。
这样,写程序时 VC++ 6.0 会尽力给你关于代码的提示,比如写函数名之后的左括号“(”后,VC++ 6.0 会告诉你这个函数的参数表:
printf( <-这个括号刚打上
int printf(const char *, ...) <-这是 VC++ 6.0 告诉你的;因为你此时在写第一个参数,所以“const char *”(意思:要求一个 const char *)是粗体
- 保存文件时要注意,保存成 .c 和 .cpp 的效果不一样。保存成 .c 的话,没办法用 bool 类型,但是编译器会遵循 C 语法而不是 C++ 语法,这样可以帮助确保你的程序是和你想的一致。
- 打开以前的文件时,不要直接打开 .c 或 .cpp 文件,相反打开 .dsw 文件,这时你会发现 VC++ 6.0 的界面是你上次关闭那个文件时的界面,连窗口的位置都一样。
- 不要点那个连接按钮,点组建(Build)菜单的全部重建(Rebuild All),否则 VC++ 6.0 有时会死机。
- 有空去 E:\Program Files\Microsoft Visual Studio\VC98\Include\ 里去看看(假设你的 VC++ 6.0 装到了 E 盘)。
不要被里边密密麻麻的文件吓倒,全都是 VC++ 6.0 的库文件。应该能看到 math.h、stdio.h、string.h 等著名“人物”吧?
打开 stdio.h 看看,试试你能找到 printf 的函数原型不?(实在不行就编辑 -> 查找)
- 桌面上的 VC++ 6.0 的快捷方式图标丢了?去 F:\Program Files\Microsoft Visual Studio\Common\MSDev98\Bin\(假设你的系统在 F 盘),把 msdev.exe 用鼠标右键抓到桌面上,松手之后“在当前位置创建快捷方式”,然后给这个新图标改个好听点的名字吧。
- 使用 ctype.h 中的字符判断函数(isupper()、islower()、is*****() 之类)时,不要写 if(functionname(ch)==1),写 if(isupper(ch))。
VC++ 6.0 提供的这些函数其实会根据字符种类的不同返回不同的值,如大写返回 1、数字返回 4(详见 CType.txt)等等,你要是胆敢写 if(isdigit(ch)==1) 的话……嘿嘿,{} 里的代码是永远不会执行的(isdigit(ch) 在 ch 是数字时返回 4,否则返回 0,绝对不会返回 1 的)。
- 判断条件是 0 非 0 时不要用 if(expression==0) 或 if(expression!=0),写 if(!(expression)) 或 if(expression),免得你丢个等号把“==”写成“=”。
- 发生编译错误?双击给出的错误信息,会跳到错误所在行或其下一行。
错误要从上往下看,没准一个变量没定义就会引起十来条错误。
丢了个分号的话,会在下一行给出提示,上一行末尾加分号就行了。
函数不声明返回值的话,会提示你默认为 int,但是通常你又没写 return retvalue;……得,又是两条错误。所以——不考虑函数值的话记得写上 void(唯一的例外是 main 函数,它的返回值不是给你看的)。
- 变量别乱起名,最好用对应的英文单词。(查词典!)
另外,在变量名前面缀上类型、每个单词首字母大写也是通用的作法。

B:以下from: 《Windows API 编程》冉林仓


C:《Windows程序设计(第5版 珍藏版)》Charles.Petzold.扫描版.pdf和VC6.0SP6的使用记录

【CString类】如果是MFC工程可以直接使用。在非MFC工程中如何使用CString类:在VC6里,CString是个普通类,而之后的版本中就变成模板类了,目的是使用方便。所以VC6以后的VC版本中,在#include <Windows.h>之前#include <atlstr.h>。在VC6里,http://zhidao.baidu.com/question/47834487.html

【连接错误】连接错误的解决方法,使用杂注(编译指示)命令,示例:#pragma comment(lib,"D:/ProgramFiles/Microsoft Visual Studio/VC98/Lib/WINMM.LIB") 。注,第二个参数可能需要全路径。如果在工程设置的连接里面添加.LIB文件后仍无法解决,可以使用此方法解决。

【函数的形参与实参】形参是指定义函数的时候的参数,还没有值,是假设的。实参是指函数被使用的时候的参数,这个时候的参数是有值的。

【“以零结尾的字符串”】即是以NULL结尾的字符串,包括8086汇编语言中的。

【队列消息和非队列消息】应该从多线程进行分析。while(GetMessage(...))通常在界面线程中,GetMessage(...)获取的消息是队列消息。既然是多线程,那么子线程的结尾放在主线程的什么位置就是个问题(WaitForSingleObject(HANDLE hHandle, DWORD dwMilliseconds))。通常非队列消息的子线程的等待结束的位置放在前面。通常不需要去管是队列消息还是非队列消息。
需要注意的是,如果在窗口过程中SendMassage(...),即事件中产生事件,产生的消息会被放入子线程处理,并等待结束后再往下执行。故从源代码的角度看,在这种情况下,相当于在单线程中窗口过程被递归调用。

【cpp工程】新建工程的时候,默认是cpp工程,这样不必先定义变量、可以使用bool型等。

【fclose()的位置】不严格的测试发现,不应该fopen一个文件后,把句柄放在那里供多次使用,会乱套。应该fread或fwrite后立即fclose,再需要的时候重新fopen。

【多线程】“同步”和“异步”,是哪个意思,要看原来是同步还是异步。Windows API:临界区(关键代码段), 互斥对象, 事件对象。WaitForSingleObject()/WaitForMultiObject()两个函数用于访问状态。

D:字符集及编码格式

VC6默认使用CP936(即"GBK","GBK"对应的code page是CP936),较高版本的VC默认使用Unicode。
Windows使用代码页(code page)来适应各个国家和地区。"GB2312"、"GBK"对应的code page是CP936。微软也为GB18030定义了code page:CP54936。但是由于GB18030有一部分4字节编码,而Windows的代码页只支持单字节和双字节编码,所以这个code page是无法真正使用的。UTF-8是Unicode的一种流行的编码格式,是可变长度的格式。现在的Windows内核使用的是Unicode的UTF-16格式,其完整支持对于桌面系统而言是从Windows 2000开始的。UTF-16在Unicode“基本多文种平面”(即常用字)定义的字符,固定使用2字节储存。而在“辅助平面”定义的字符,以4字节储存。UTF-16的大尾序和小尾序储存形式,一般来说,以Macintosh制作或储存的文字使用大尾序格式,以Microsoft或Linux制作或储存的文字使用小尾序格式。

0 0