短縮形式のパスを取得          <TOP>


PathCompactPath 短縮形式のパスを取得
GetDC デバイスコンテキストのハンドルを取得
ReleaseDC デバイスコンテキストを解放
 

テキストボックスの長さ(例では216ドット)に合わせて短縮しています。

参照

パス名の操作(T)

 

'================================================================
'= 短縮形式のパスを取得
'=    (PathCompactPath.bas)
'================================================================
#include "Windows.bi"

' 短縮形式のパスを取得
Declare Function Api_PathCompactPath& Lib "shlwapi" Alias "PathCompactPathA" (ByVal hDC&, ByVal lpszPath$, ByVal dx&)

' 指定されたウィンドウのクライアント領域または画面全体を表すディスプレイデバイスコンテキストのハンドルを取得
Declare Function Api_GetDC& Lib "user32" Alias "GetDC" (ByVal hWnd&)

' デバイスコンテキストを解放
Declare Function Api_ReleaseDC& Lib "user32" Alias "ReleaseDC" (ByVal hWnd&, ByVal hDC&)

Var Shared Edit1 As Object
Var Shared Text1 As Object
Var Shared Button1 As Object

Edit1.Attach GetDlgItem("Edit1") : Edit1.SetFontSize 12
Text1.Attach GetDlgItem("Text1") : Text1.SetFontSize 14
Button1.Attach GetDlgItem("Button1") : Button1.SetFontSize 14

'================================================================
'=
'================================================================
Declare Sub MainForm_Start edecl ()
Sub MainForm_Start()
    Edit1.SetWindowText "C:\MyFolder\FBasic\MyReallyWayTooLongFolderName\ButWhoCares\IhaveTheAPI.doc"
End Sub

'================================================================
'=
'================================================================
Declare Sub Button1_on edecl ()
Sub Button1_on()
    Var hDC As Long
    Var CtlWidth As Long 
    Var FileName As String 
    
    FileName = Edit1.GetWindowtext 
    
    Text1.SetWindowSize 216, 24
    CtlWidth = Text1.GetWidth
    hDC = Api_GetDC(Text1.GethWnd) 
    
    Ret = Api_PathCompactPath(hDC, FileName, CtlWidth )
    Text1.SetWindowText FileName

    Ret = Api_ReleaseDC(hDC, Text1.GethWnd) 
End Sub

'================================================================
'=
'================================================================
While 1
    WaitEvent
Wend
Stop
End