博客
关于我
MFC常用函数
阅读量:796 次
发布时间:2023-02-09

本文共 1756 字,大约阅读时间需要 5 分钟。

GetModuleFileName() 函数解析

1. 函数原型

DWORD GetModuleFileName(HMODULE hModule, LPTSTR lpFileName, DWORD nSize);

该函数用于获取模块的全路径名。其参数说明如下:

  • HMODULE hModule:表示模块的句柄。如果该参数为 NULL,函数将返回当前进程的全路径名。
  • LPTSTR lpFileName:用于存储返回的模块路径名的内存块指针,属于输出参数。
  • DWORD nSize:指定 lpFileName 缓冲区的最大容量。

2. 函数返回值

  • 成功情况:函数将模块路径名返回至 lpFileName,若缓冲区过小,则只返回缓冲区内的内容。
  • 失败情况:返回 0,调用 GetLastError() 可获取错误代码。

3. 常用示例

以下是一个获取当前模块路径的示例:

DWORD nSize = 1024;LPTSTR lpFileName = nullptr;DWORD ret = GetModuleFileName(nullptr, lpFileName, nSize);if (ret > 0){    cout << "当前模块路径:" << lpFileName << endl;}

GetPrivateProfileString() 函数解析

1. 函数原型

DWORD GetPrivateProfileString(LPTSTR lpAppName, LPTSTR lpKeyName, LPTSTR lpDefault, LPTSTR lpReturnedString, DWORD nSize, LPTSTR lpFileName);

该函数用于从初始化文件中获取特定键名对应的字符串值。其参数说明如下:

  • LPTSTR lpAppName:指定配置文件中的小节名。如果为 NULL,则将所有小节名复制到缓冲区。
  • LPTSTR lpKeyName:指定小节中要获取的键名。如果为 NULL,则将小节内所有键名复制到缓冲区。
  • LPTSTR lpDefault:默认字符串。如果键名不存在,则使用默认值。若 lpDefaultNULL,则默认值为空字符串 ""
  • LPTSTR lpReturnedString:用于接收返回的字符串,属于输出参数。
  • DWORD nSize:指定 lpReturnedString 缓冲区的大小。
  • LPTSTR lpFileName:指定初始化文件路径。如果路径不完整,系统将从 Windows 目录开始搜索。

2. 函数返回值

  • 成功情况:返回实际复制的字符数,不计末尾 NULL 字符。
  • 失败情况:返回 0,调用 GetLastError() 可获取错误代码。

3. 常用示例

以下是一个从初始化文件中获取特定键值的示例:

// 假设 Server.ini 文件格式如下:// [NETWORK]// ServerIP=100.100.100.53LPTSTR lpAppName = "NETWORK";LPTSTR lpKeyName = "ServerIP";LPTSTR lpDefault = "";LPTSTR lpReturnedString = nullptr;DWORD nSize = 1024;DWORD ret = GetPrivateProfileString(lpAppName, lpKeyName, lpDefault, lpReturnedString, nSize, "Server.ini");if (ret > 0){    cout << "获取到的 IP 地址:" << lpReturnedString << endl;}

注意事项

  • 缓冲区大小:确保 nSize 足够大,避免字符串被截断。
  • 路径搜索:若 lpFileName 未提供完整路径,系统将从 Windows 目录开始搜索。
  • 默认值处理:避免在 lpDefault 中添加尾随空格,函数会自动添加 NULL 字符。
  • 错误处理:检查返回值和错误代码,确保程序健壮性。
  • 通过合理使用上述两组 API 函数,可以高效地处理程序配置文件和模块路径相关的需求。

    转载地址:http://fwffk.baihongyu.com/

    你可能感兴趣的文章
    MHA高可用架构与Atlas读写分离
    查看>>
    Miaoo朋友圈程序全完整版源码
    查看>>
    MicroJob 任务注册中心添加 Nacos 支持,升级 0.0.3 版本
    查看>>
    Microsoft Access 详解-chatgpt4o作答
    查看>>
    Microsoft AI-System 开源项目教程
    查看>>
    Microsoft Dynamics CRM server 2013 中业务规则,有点像C#的正则表达式
    查看>>
    Microsoft Project Acoustics 开源项目教程
    查看>>
    Microsoft Security Updates API 使用教程
    查看>>
    Microsoft SQL Server 2000收缩MDF数据
    查看>>
    Microsoft SQL Server 2005 提供了一些工具来监控数据库
    查看>>
    Microsoft Store 里面应用没有获取和安装按钮,无法安装应用 怎么办?
    查看>>
    Microsoft visual c++ 14.0 is required问题解决办法
    查看>>
    Microsoft Windows XP SP3安装测试手记
    查看>>
    Microsoft.CSharp.targets不存在解决方法
    查看>>
    Microsoft.Web.Administration.ServerManager启用IIS的ISAPI
    查看>>
    Microsoft语音识别定制培训
    查看>>
    MIF格式详解,javascript加载导出 MIF文件示例
    查看>>
    Milesight VPN server.js 任意文件读取漏洞(CVE-2023-23907)
    查看>>
    Miller rabin
    查看>>
    miller-rabin matlab,Miller-Rabin素数判断算法
    查看>>