void CChildView::OnTaskListdriver()
{
CClientDC dc(this);
TCHAR szBuffer[MAX_PATH];
HANDLE hFind=::FindFirstVolume(szBuffer,MAX_PATH);
if(hFind!=INVALID_HANDLE_VALUE)
{
int i=0;
do
{
dc.TextOut(0,i*20,szBuffer,MAX_PATH);
}while(::FindNextVolume(hFind,szBuffer,MAX_PATH));
::FindVolumeClose(hFind);
}
}这个函数编译时系统提示
ChildView.cpp
d:\Project\C++\solution\Test\ChildView.cpp(84) : error C2039: “FindFirstVolume” : 不是“operator``global namespace''”的成员
d:\Project\C++\solution\Test\ChildView.cpp(84) : error C2065: “FindFirstVolume” : 未声明的标识符
d:\Project\C++\solution\Test\ChildView.cpp(91) : error C2039: “FindNextVolume” : 不是“operator``global namespace''”的成员
d:\Project\C++\solution\Test\ChildView.cpp(91) : error C2065: “FindNextVolume” : 未声明的标识符
d:\Project\C++\solution\Test\ChildView.cpp(92) : error C2039: “FindVolumeClose” : 不是“operator``global namespace''”的成员
d:\Project\C++\solution\Test\ChildView.cpp(92) : error C2065: “FindVolumeClose” : 未声明的标识符生成日志保存在“file://d:\Project\C++\solution\Test\Debug\BuildLog.htm”中
Test - 6 错误,0 警告
但是下面这个同样调用API 也是FILE I/O的API函数 就可以通过void CChildView::OnListDirectory()
{
CClientDC dc(this);
::WIN32_FIND_DATA fd;
HANDLE hFind=::FindFirstFile(_T("C:\\*.*"),&fd);
if(hFind!=INVALID_HANDLE_VALUE)
{
int i=0;
do
{
if(fd.dwFileAttributes&FILE_ATTRIBUTE_DIRECTORY)
{
dc.TextOut(0,i*20,fd.cFileName);
i++;
}
}while(::FindNextFile(hFind,&fd));
::FindClose(hFind);
}
}p.s. 第二函数中WIN32_FIND_DATA一定要用::WIN32_FIND_DATA才可以而HANDLE却可以直接使用
WIN32_FIND_DATA定义在(WINBASE.H) HANDLE 定义在(WINNT.H)是不是有关系?盼复
解决方案 »
- 关于回调函数的错误,麻烦你们
- windows程序设计中怎样保存一个绘制好的位图?
- 使用Inter C++ Compiler 配置完后出现的问题
- 请教WSADuplicateSocket问题,已经看过CSDN上的其它相关帖子,请教。
- GetDlgItem(IDC_Clear)->SetWindowText("");出现不能转换
- 那里有msdn for vc6.0中文版本可以下载?
- CPropertySheet在Win7和Win8下高度不同
- 我希望打印一些内容,但不希望弹出打印对话框,请问该怎样实现呢?
- 关于内存拷贝的函数,谁知道?
- 弱智问题:OICQ的三个线程是干吗用的?
- 串口通信,如何设置波特率(据两例9600,4800),crc16校验,8位数据,1位停止,一位起止
- 关于文件的属性!
应该是头文件或库文件的问题
是一是在工程里面加入
#pragma comment(lib,"Kernel32.lib")
头文件在Windows.h
#include <windows.h>
而且 我在跟踪defination的时候在 winbase.h里找到了
WINBASEAPI
BOOL
WINAPI
FindVolumeClose(
HANDLE hFindVolume
);WINBASEAPI
BOOL
WINAPI
FindNextVolumeA(
HANDLE hFindVolume,
LPSTR lpszVolumeName,
DWORD cchBufferLength
);
WINBASEAPI
BOOL
WINAPI
FindNextVolumeW(
HANDLE hFindVolume,
LPWSTR lpszVolumeName,
DWORD cchBufferLength
);
#ifdef UNICODE
#define FindNextVolume FindNextVolumeW
#else
#define FindNextVolume FindNextVolumeA
#endif // !UNICODE这几个不能编译通过的函数他们和能够通过的那几个函数在同一个文件中。
现在百思不得其解。
那位老大帮帮我。
如果是头文件和库文件为什么在一起的API有的成功有的不行?
而且是同样类型的API ,在同一个header 里面
#include <windows.h>我已经加过
虽说MFC程序的 <afxwin.h>已经包含了我还是加了 不行!!to lsgfgs(李氏)
你说的已经定义过了
谢谢。p.s 我用的是
win2k professional sp3
Microsoft Visual C++ .NET 55601-652-0000007-18053
关键在于
#define _WIN32_WINNT 0x0500
我已经在
stdafx.h里找到相应的
原来是
#ifndef _WIN32_WINNT
#define #define _WIN32_WINNT 0x0400
#endif 已经编译通过
但是那位老大告诉我为什么〉?
不满意我再加一点 :-)