问题: 在vc中,有个类型转换 _T()是什么意思?字符串转换成什么类型。最好能举个例子。
回答:
Windows使用两种字符集ANSI和UNICODE,前者就是通常使用的单字节方式,但这种方式处理象中文这样的双字节字符不方便,容易出现半个汉字的情况。而后者是双字节方式,方便处理双字节字符。Windows NT的所有与字符有关的函数都提供两种方式的版本,而Windows 9x只支持ANSI方式。_T一般同字常数相关,如_T("Hello")。如果你编译一个程序为ANSI方式,_T实际不起任何作用。而如果编译一个程序为UNICODE方式,则编译器会把"Hello"字符串以UNICODE方式保存。_T和_L的区别在于,_L不管你是以什么方式编译,一律以以UNICODE方式保存。
------------------------------------------------
请问TCHAR,CHAR,LPSTR,LPCSTR,char这几个数据类型有何不同,该如何使用?
回答:
char是C语言标准数据类型,字符型,至于由几个字节组成通常由编译器决定,一般一个字节。Windows为了消除各编译器的差别,重新定义了一些数据类型,你提到了另外几个类型都是这样。CHAR为单字节字符。还有个WCHAR为Unicode字符,即不论中英文,每个字有两个字节组成。如果当前编译方式为ANSI(默认)方式,TCHAR等价于CHAR,如果为Unicode方式,TCHAR等价于WCHAR。在当前版本LPCSTR和LPSTR没区别,即以零结尾的字符串指针,相当于CHAR *。
--------------------------------------------------
编程工具: VC++6
问题: 请问如何使用VC++实现将一个文件改名呢?
水平: 中级
回答:
如果想使用标准C语言函数,就使用rename函数。
如果要使用API函数,就使用MoveFile函数。
----------------------------------------------------
操作系统: NT4.0 Windows 98 NT5.0
编程工具: VC
问题: 如何获得应用程序当前路径,我使用如下函数:CDocument::GetPathName().但返回值为空。
回答:
使用API的GetCurrentDirectory函数可以获得当前目录。
----------------------------------------------
编程工具: vc++6.0
问题: 请问如何在VC所编的程序中运行其它可执行文件在WINDOWS中产生的快捷方式(即*.LNK文件)?
回答:
使用ShellExecute函数,如:
ShellExecute(0, "open",
"C://WIN98//Desktop//Acrobat Reader 4.0.lnk", NULL, NULL, SW_SHOWNORMAL);
-----------------------------------------------
编程工具: VC
问题: 请问如何知道一个目录是否已经存在,请给出具体的例子好吗?如D:/CDR/Te目录,如何用winapi来实现检查这个目录是否存在!
回答:
可以这样做:
WIN32_FIND_DATA fd;
HANDLE hFind = FindFirstFile("d://cdr//te", &fd);
if ((hFind != INVALID_HANDLE_VALUE) && (fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY))
{
// 存在
}
FindClose(hFind);
------------------------------------------------
BC5.0,VC6.0
如何解决下面的问题?文件系统包括目录和文件,目录下包括任意数目子目录和文件。我希望删除文件和目录。对删除方法将进行递归删除。
回答:
你不一定要进行递归删除。你可以使用API函数SHFileOperation,它可以一次删除目录及其下面的子目录和文件。如果你一定要递归删除,可以参考微软的Knowledge Base的文章:“Q185476 OWTO: Search Directories to Find or List Files”。
回答:
可以这样做:
WIN32_FIND_DATA fd;
HANDLE hFind = FindFirstFile("d://cdr//te", &fd);
if ((hFind != INVALID_HANDLE_VALUE) && (fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY))
{
// 存在
}
FindClose(hFind);
------------------------------------------------
BC5.0,VC6.0
如何解决下面的问题?文件系统包括目录和文件,目录下包括任意数目子目录和文件。我希望删除文件和目录。对删除方法将进行递归删除。
回答:
你不一定要进行递归删除。你可以使用API函数SHFileOperation,它可以一次删除目录及其下面的子目录和文件。如果你一定要递归删除,可以参考微软的Knowledge Base的文章:“Q185476 OWTO: Search Directories to Find or List Files”。
回答:
char是C语言标准数据类型,字符型,至于由几个字节组成通常由编译器决定,一般一个字节。Windows为了消除各编译器的差别,重新定义了一些数据类型,你提到了另外几个类型都是这样。CHAR为单字节字符。还有个WCHAR为Unicode字符,即不论中英文,每个字有两个字节组成。如果当前编译方式为ANSI(默认)方式,TCHAR等价于CHAR,如果为Unicode方式,TCHAR等价于WCHAR。在当前版本LPCSTR和LPSTR没区别,即以零结尾的字符串指针,相当于CHAR *。
--------------------------------------------------
编程工具: VC++6
问题: 请问如何使用VC++实现将一个文件改名呢?
水平: 中级
回答:
如果想使用标准C语言函数,就使用rename函数。
如果要使用API函数,就使用MoveFile函数。
----------------------------------------------------
操作系统: NT4.0 Windows 98 NT5.0
编程工具: VC
问题: 如何获得应用程序当前路径,我使用如下函数:CDocument::GetPathName().但返回值为空。
回答:
使用API的GetCurrentDirectory函数可以获得当前目录。
----------------------------------------------
编程工具: vc++6.0
问题: 请问如何在VC所编的程序中运行其它可执行文件在WINDOWS中产生的快捷方式(即*.LNK文件)?
回答:
使用ShellExecute函数,如:
ShellExecute(0, "open",
"C://WIN98//Desktop//Acrobat Reader 4.0.lnk", NULL, NULL, SW_SHOWNORMAL);
-----------------------------------------------
编程工具: VC
问题: 请问如何知道一个目录是否已经存在,请给出具体的例子好吗?如D:/CDR/Te目录,如何用winapi来实现检查这个目录是否存在!
回答:
可以这样做:
WIN32_FIND_DATA fd;
HANDLE hFind = FindFirstFile("d://cdr//te", &fd);
if ((hFind != INVALID_HANDLE_VALUE) && (fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY))
{
// 存在
}
FindClose(hFind);
------------------------------------------------
BC5.0,VC6.0
如何解决下面的问题?文件系统包括目录和文件,目录下包括任意数目子目录和文件。我希望删除文件和目录。对删除方法将进行递归删除。
回答:
你不一定要进行递归删除。你可以使用API函数SHFileOperation,它可以一次删除目录及其下面的子目录和文件。如果你一定要递归删除,可以参考微软的Knowledge Base的文章:“Q185476 OWTO: Search Directories to Find or List Files”。
回答:
可以这样做:
WIN32_FIND_DATA fd;
HANDLE hFind = FindFirstFile("d://cdr//te", &fd);
if ((hFind != INVALID_HANDLE_VALUE) && (fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY))
{
// 存在
}
FindClose(hFind);
------------------------------------------------
BC5.0,VC6.0
如何解决下面的问题?文件系统包括目录和文件,目录下包括任意数目子目录和文件。我希望删除文件和目录。对删除方法将进行递归删除。
回答:
你不一定要进行递归删除。你可以使用API函数SHFileOperation,它可以一次删除目录及其下面的子目录和文件。如果你一定要递归删除,可以参考微软的Knowledge Base的文章:“Q185476 OWTO: Search Directories to Find or List Files”。