在 MFC(Microsoft Foundation Classes)中,CInternetFile 类的受保护数据成员 m_hFile 存在,但是它并不直接表示文件句柄,而是表示文件的 HINTERNET 句柄。这个句柄用于在 Internet 上打开的文件的操作。

下面是 CInternetFile 类定义中的相关部分:
protected:
    HINTERNET m_hFile;   // Internet 文件的句柄

这个句柄在 CInternetFile 内部被使用,而通常你不需要直接访问它。相反,你可以使用类的成员函数来进行文件的读写等操作。

如果你需要获取 HINTERNET 句柄,你可以使用 GetHandle 成员函数,而不是直接访问 m_hFile。以下是一个简单的示例:
#include <afxinet.h>

void UseInternetHandle()
{
    CInternetSession session;
    CInternetFile* pFile = nullptr;

    try
    {
        // 假设你已经打开了 Internet 文件并将其赋值给 pFile

        // 获取 HINTERNET 句柄
        HINTERNET hInternet = pFile->GetHandle();

        // 使用 hInternet 句柄进行其他操作
        // ...
    }
    catch (CInternetException* pEx)
    {
        // 处理异常
        pEx->Delete();
    }

    // 清理资源
    if (pFile != nullptr)
        pFile->Close();
    session.Close();
}

在上述示例中,pFile->GetHandle() 方法用于获取 CInternetFile 对象的 HINTERNET 句柄。请注意,使用 GetHandle() 方法时,确保 CInternetFile 对象是有效的,且在获取句柄后不要在外部释放该句柄,因为 CInternetFile 对象会负责句柄的释放。


转载请注明出处:http://www.zyzy.cn/article/detail/18323/MFC/CInternetFile