MFC常用函数
发布日期:2025-04-14 00:57:46 浏览次数:10 分类:精选文章

本文共 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 函数,可以高效地处理程序配置文件和模块路径相关的需求。

    上一篇:MFC快捷键
    下一篇:MFC工作笔记0011---atoi的用法

    发表评论

    最新留言

    关注你微信了!
    [***.104.42.241]2025年05月21日 06时09分14秒