问题描述
1。api多而杂,如何记呢?vc2005对api好像没有智能提示输入(即没有this->然后列出一堆函数供选)2。setfilepointer()4。宽字符与ansi函数有什么区别,怎么知道调用的是哪一个?5。如何知道一个函数的所有错误码,及含义;6。SetEndOfFile可以加长文件吗?个人认为截短文件就可以,加长是怎么做到的呢?先谢了。
解决方案
解决方案二:
那就回答5个吧,50分,10分1个。1、API是很多,但都有一定的特征,看到名字基本上能猜出什么名字,MS为我们设计API的时候,是一些有意义的单词组成API的名字的。也没人能背下所有的API的,不认识可以查MSDN。2、这是设置文件指针,可以看MSDN4、宽字节是Unicode,2个字节算一个Unicode字符,ANSI只有一个字节。看MSDN中,函数的申明会告诉你,这个比如是LPCWSTR,那么就是Unicode啦,如果是LPCSTR,那么肯定是ANSI,主要看MSDNms-help://MS.MSDNQTR.v90.chs/winprog/winprog/windows_data_types.htm比较有用5、看函数的返回值和含义,仍然MSDN。至于错误码么,用GetLastError()获得,返回值是int型,查MSDN能知道错误码对应的含义
解决方案三:
1.多看MSDN,一些相关的应用,只能多使用,才能记住一些4.就是对应不同的字符集,一般vs2005以后,默认都是使用unicode,宽字符函数5.查看函数在MSDN中说明
解决方案四:
什么叫“对应不同的字符集”?我查过msdn,没有查到错误码啊?(在platformSDK下)第6个问题,事实上我是查看过msdn后得知其有加长的功能,但是只给出截短的例子。
解决方案五:
不同的字符集,就是ansi来编码或者unicode编码错误码,可以msdn中查GetLastError()函数,有对应ErrorCode
解决方案六:
api函数命名一般能根据名字知道意思宽字符两个字符算一个unicode,ansi只占一个字节
解决方案七:
呵呵,回答得好浅喔,这些我都知道了呀。可是不知道什么叫“宽字符与ansi函数”getLasterror都知道啊,可是不是要先知道errorcode的含义,再编程处理之的吗?那么这些errorcode都是什么含义呢?在哪里可以找到一个api对应的所有errorcode呢?
解决方案八:
呵呵,当然是从msdn里查找一个api对应的所有errorcode...在vs2005里用::就可以列出api了,this指针列出来的是类的成员函数..不是所有的api..ansi函数一般是后面带有A后缀的函数,,宽字符函数是后面带有W后缀的函数比如SetWindowTextA就是处理ansi的函数,,SetWindowTextW就是处理宽字符(UNICODE字符集的函数)..一般来说,在头文件中#ifdef_UNICODE#defineSetWindowTextSetWindowTextW#else#defineSetWindowTextSetWindowTextA#endif用上了预处理了,所以一般我们都是用SetWindowText这个函数就可以了.
解决方案九:
呵呵,当然是从msdn里查找一个api对应的所有errorcode...在vs2005里用::就可以列出api了,this指针列出来的是类的成员函数..不是所有的api..ansi函数一般是后面带有A后缀的函数,,宽字符函数是后面带有W后缀的函数比如SetWindowTextA就是处理ansi的函数,,SetWindowTextW就是处理宽字符(UNICODE字符集的函数)..一般来说,在头文件中#ifdef_UNICODE#defineSetWindowTextSetWindowTextW#else#defineSetWindowTextSetWindowTextA#endif用上了预处理了,所以一般我们都是用SetWindowText这个函数就可以了.
解决方案十:
大哥们函数返回的错误码你们能在msdn中查到??搞笑呢如果安装了vc6可以使用安装目录下的errorlookup来查看错误代码的含义vc6以后可以一次类推不要以为什么东西都可以在msdn上查询给你个错误代码6你上msdn查给我看看!!!!
解决方案十一:
errorlookup就是调用一下代码?LPVOIDlpMsgBuf;FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER|FORMAT_MESSAGE_FROM_SYSTEM|FORMAT_MESSAGE_IGNORE_INSERTS,NULL,GetLastError(),0,//Defaultlanguage(LPTSTR)&lpMsgBuf,0,NULL);//ProcessanyinsertsinlpMsgBuf.//...//Displaythestring.MessageBox(NULL,(LPCTSTR)lpMsgBuf,LError,MB_OK|MB_ICONINFORMATION);//Freethebuffer.LocalFree(lpMsgBuf);
解决方案十二:
等我试试楼上两位朋友的意见再来结贴,先谢过