PathCompactPathW 函数 (shlwapi.h)

通过将路径组件替换为省略号来截断要适应给定像素宽度的文件路径。

语法

BOOL PathCompactPathW(
  [in]      HDC    hDC,
  [in, out] LPWSTR pszPath,
  [in]      UINT   dx
);

参数

[in] hDC

类型:HDC

用于字体指标的设备上下文的句柄。 此值可以 NULL

[in, out] pszPath

类型:LPTSTR

指向长度为 null 的字符串的指针MAX_PATH,其中包含要修改的路径。 返回时,此缓冲区将包含修改后的字符串。

[in] dx

类型:UINT

字符串必须容纳的宽度(以像素为单位)。

返回值

类型:BOOL

如果路径已成功压缩到指定的宽度,则返回 TRUE。 返回失败时 FALSE,或者路径的基部分不适合指定的宽度。

言论

此函数使用当前在 hDC 中选择的字体来计算文本的宽度。 此函数不会压缩以省略号开头的基文件名以外的路径。

例子

#include <windows.h>
#include <iostream.h>
#include "Shlwapi.h"

HDC hdc;  /* display DC handle to current font metrics */ 

void main( void )
{
// String path name 1.
char buffer_1[MAX_PATH] = "C:\\path1\\path2\\sample.txt";
char *lpStr1;
lpStr1 = buffer_1;

// String path name 2.
char buffer_2[MAX_PATH] = "C:\\path1\\path2\\sample.txt";
char *lpStr2;
lpStr2 = buffer_2;

// String path name 3.
char buffer_3[MAX_PATH] = "C:\\path1\\path2\\sample.txt";
char *lpStr3;
lpStr3 = buffer_3;

// String path name 4.
char buffer_4[MAX_PATH] = "C:\\path1\\path2\\sample.txt";
char *lpStr4;
lpStr4 = buffer_4;

// Variable to get the return from "PathCompactPath".
int retval;

cout << "The un-truncated path is                " << lpStr1 << endl;

retval = PathCompactPath(hdc,lpStr1,125);
cout << "The truncated path at 125 pixels is :   " << lpStr1 << endl;

retval = PathCompactPath(hdc,lpStr2,120);
cout << "The truncated path at 120 pixels is :   " << lpStr2 << endl;

retval = PathCompactPath(hdc,lpStr3,110);
cout << "The truncated path at 110 pixels is :   " << lpStr3 << endl;

retval = PathCompactPath(hdc,lpStr4,25);
cout << "The truncated path at  25 pixels is :   " << lpStr4 << endl;
}

OUTPUT:
===========
The un-truncated path is                C:\path1\path2\sample.txt
The truncated path at 125 pixels is :   C:\path1\...\sample.txt
The truncated path at 120 pixels is :   C:\pat...\sample.txt
The truncated path at 110 pixels is :   C:\p...\sample.txt
The truncated path at  25 pixels is :   ...\sample.txt

注意

shlwapi.h 标头将 PathCompactPath 定义为一个别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将中性编码别名与不中性编码的代码混合使用可能会导致编译或运行时错误不匹配。 有关详细信息,请参阅函数原型的 约定。

要求

要求 价值
最低支持的客户端 Windows 2000 Professional、Windows XP [仅限桌面应用]
支持的最低服务器 Windows 2000 Server [仅限桌面应用]
目标平台 窗户
标头 shlwapi.h
Shlwapi.lib
DLL Shlwapi.dll(版本 4.71 或更高版本)