博客
关于我
MFC常用函数
阅读量:795 次
发布时间: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/

    你可能感兴趣的文章
    Mac下忘记MySQL密码可以这样做!
    查看>>
    Mac下配置多个SSH-Key (gitLab)
    查看>>
    mac关闭占用某个端口的进程
    查看>>
    mac删除appstore账号和更新失败的问题
    查看>>
    mac地址随机变化的解决方法(安卓手机通用)不用ROOT
    查看>>
    Mac备忘录内容突然全部消失恢复
    查看>>
    mac如何查看连过的wifi密码
    查看>>
    mac安全权限解决
    查看>>
    Mac安装FastDFS
    查看>>
    Mac安装Maven
    查看>>
    Mac安装MySQL详细教程
    查看>>
    Mac实现远程服务器登录管理
    查看>>
    mac常用命令
    查看>>
    Mac打包dmg文件(更换背景图)
    查看>>
    Mac搭建appium环境
    查看>>
    Mac搭建Cocos2d-x 3.x android打包环境
    查看>>
    mac更新后 homestead 无法使用
    查看>>
    mac环境安装docker
    查看>>
    Mac环境安装ElasticSearch-head
    查看>>
    MAC生成公钥私钥、PKCS1 转 PKCS8
    查看>>