导航
  • 主页
  • API 调用
  • 基础类
  • 控件与界面
  • 数据库相关
  • DataWindow
  • 项目管理
  • Web 应用
  • 脚本语言

扩展函数的使用?

cq_tan 2003-01-10 03:52:24
我用的是PB8.0,我的SHBROWSEFORFOLDERA函数要怎样申明才能使用呀?(SHELL32库)
...全文
65 点赞 收藏 4
写回复
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
myclife 2003-01-11
看看这个对象:
forward
global type nca_folderbrowse from nonvisualobject
end type
type shitemid from structure within nca_folderbrowse
end type
type itemidlist from structure within nca_folderbrowse
end type
type browseinfo from structure within nca_folderbrowse
end type
end forward

type shitemid from structure
unsignedint cb
character abid
end type

type itemidlist from structure
shitemid mkid
end type

type browseinfo from structure
unsignedlong howner
unsignedlong pidlroot
string pszdisplayname
string lpsztitle
unsignedint ulflags
unsignedlong lpfn
long lparam
integer iimage
end type

global type nca_folderbrowse from nonvisualobject autoinstantiate
end type

type prototypes
Protected:
Function unsignedlong SHGetPathFromIDListA( unsignedlong pidl, ref string pszPath) Library 'shell32'
Function unsignedlong SHBrowseForFolderA( browseinfo lpbrowseinfo ) Library 'shell32'
Subroutine CoTaskMemFree(ulong idlist) Library 'ole32'
end prototypes

type variables
Protected:
unsignedLong BIF_RETURNONLYFSDIRS = 1
end variables

forward prototypes
public function string browseforfolder (window awi_parent, string as_caption)
public function string browseforfolder (window awi_parent, string as_caption)
end prototypes

public function string browseforfolder (window awi_parent, string as_caption);
/********************************************************************
BrowseForFolder

<DESC> Open the browse for folder dialog and return the
selected directory.</DESC>

<RETURN> String: Folder Selected.</RETURN>

<ACCESS> Public

<ARGS> awi_Parent: Parent Window.
as_Caption: Caption to display on dialog.</ARGS>

<USAGE> lnca_BFF.BrowseForFolder( parent, 'caption!' )</USAGE>

********************************************************************/
browseinfo lstr_bi
itemidlist lstr_idl
unsignedlong ll_pidl
unsignedlong ll_r
Integer li_pos
String ls_Path
unsignedlong ll_Null

SetNull( ll_Null )

lstr_bi.hOwner = Handle( awi_Parent )
lstr_bi.pidlRoot = 0
lstr_bi.lpszTitle = as_caption
lstr_bi.ulFlags = bif_ReturnOnlyFSDirs
lstr_bi.pszDisplayName = Space( 255 )
lstr_bi.lpfn = ll_Null

ll_pidl = SHBrowseForFolderA( lstr_bi )

ls_Path = Space( 255 )
ll_R = SHGetPathFromIDListA( ll_pidl, ls_Path )

CoTaskMemFree( ll_pidl )

RETURN ls_Path
end function

on nca_folderbrowse.create
call super::create
TriggerEvent( this, "constructor" )
end on

on nca_folderbrowse.destroy
TriggerEvent( this, "destructor" )
call super::destroy
end on

event constructor;
/********************************************************************
nca_FolderBrowse: Display a folder selection dialog. <EXCLUDE>

<OBJECT> Access the win32 API and open the Browse For Folder
Dialog. Then return the name of the folder selected.
</OBJECT>

<USAGE> nca_browseforfolder lnca_BFF

ls_Folder = lnca_BFF.BrowseForFolder( parent, 'Pick folder' )
</USAGE>

<AUTHOR>

Date Ref Author Comments
07/16/98 1 Ken Howe First Version
08/24/98 1.1 Matthew Royle Changed to work with PB5.0
06/03/99 1.2 Ken Howe Added CoTaskMemFree, based on a
Discussion on the PB News group and
also this ise used in many VB examples.
********************************************************************/
// This is a code example:
/*
nva_folderbrowse lnca_bff
String ls_A

ls_A = lnca_BFF.BrowseForFolder( parent, 'pick your folder' )
MessageBox( 'You Picked', ls_A )
*/

end event
回复
hyljqr 2003-01-11
要先定義結構,以ref傳遞結構指針
回复
CQP 2003-01-10
函数原型:
WINSHELLAPI LPITEMIDLIST WINAPI SHBrowseForFolder(
LPBROWSEINFO lpbi
);

回复
powerbu 2003-01-10
声明一个外部函数,格式如下:
FUNCTION 返回类型 SHBROWSEFORFOLDERA(参数列表)LIBRARY "SHELL32.DLL"
回复
发动态
发帖子
PowerBuilder
创建于2007-09-28

814

社区成员

PowerBuilder 相关问题讨论
申请成为版主
社区公告
暂无公告