PB 電子会議室

コメント

発言No. 更新日 題名(クリックすると発言内容と関連するコメントが表示されます)
3230 98/09/14 12:28:38 RE:RE:RE:汎用的なオブジェクトを集めたらおもしろいですね By てとらぽっと
3228 98/09/14 09:43:14 RE:RE:汎用的なオブジェクトを集めたらおもしろいですね By kin
3220 98/09/11 15:51:33 RE:汎用的なオブジェクトを集めたらおもしろいですね By あすかちゃんの父
3219 98/09/11 15:53:50 RE:汎用的なオブジェクトを集めたらおもしろいですね By あすかちゃんの父
3216 98/09/11 14:51:22 汎用的なオブジェクトを集めたらおもしろいですね By kin
3208 98/09/11 12:39:53 RE:RE:RE:ありがとうございました&サンプルのダウンロード By てとらぽっと
3205 98/09/11 12:28:09 RE:RE:ありがとうございました&サンプルのダウンロード By にしやん
3200 98/09/10 19:30:37 RE:ありがとうございました&サンプルのダウンロード By てとらぽっと
3190 98/09/09 19:00:04 RE:RE:RE:SHBrowseForFolderA の使い方 By kin
3187 98/09/09 17:40:26 RE:RE:SHBrowseForFolderA の使い方 By にしやん
3183 98/09/09 16:33:54 RE:SHBrowseForFolderA の使い方 By kin
3182 98/09/09 11:33:39 SHBrowseForFolderA の使い方 By にしやん
3174 98/09/08 17:27:56 RE:RE:フォルダを指定させる方法見つかりました By てとらぽっと
3168 98/09/08 14:07:02 RE:フォルダを指定させる方法見つかりました By Air Hawk
3167 98/09/08 13:04:39 フォルダを指定させる方法見つかりました By てとらぽっと

カテゴリ:旧電子会議室
日付:1998年09月09日 11:33 発信者:にしやん
題名:SHBrowseForFolderA の使い方

こんにちは。
SHBrowseForFolderA は次のようにすれば使えます。


次のメンバを持つ構造体 BrowseInfo を作成します。

Long hWndOwner
Long pIDLRoot
Long pszDisplayName
Long lpszTitle
Long ulFlags
Long lpfnCallback
Long lParam
Long iImage


次の外部関数を定義します。

FUNCTION Long SHBrowseForFolder(REF BrowseInfo lpbi) &
    LIBRARY \"SHELL32.DLL\" ALIAS FOR \"SHBrowseForFolderA\"
FUNCTION Long SHGetPathFromIDList(Long lpIDList, REF String sPath) &
    LIBRARY \"SHELL32.DLL\" ALIAS FOR \"SHGetPathFromIDListA\"
SUBROUTINE CoTaskMemFree(Long hMem) &
    LIBRARY \"OLE32.DLL\"
FUNCTION Long lstrcat(REF String dst, String src) &
    LIBRARY \"KERNEL32.DLL\" ALIAS FOR \"lstrcatA\"


次のスクリプトで、[フォルダの参照]ダイアログを表示できます。

//定数宣言
CONSTANT Long CSIDL_DESKTOP = 0        //デスクトップがルート項目
CONSTANT Long BIF_RETURNONLYFSDIRS = 1 //フォルダ以外選択できない

//変数宣言
BrowseInfo udtBI
Long lpIDList
String PathName
String lpszTitle

//BrowseInfo 構造体情報設定
udtBI.hWndOwner = Handle(ウィンドウ)   //ダイアログの親となるウィンドウ
udtBI.pIDLRoot = CSIDL_DESKTOP
lpszTitle = \"フォルダを選択してください\"
udtBI.lpszTitle = lstrcat(lpszTitle,\"\")
udtBI.ulFlags = BIF_RETURNONLYFSDIRS

//[フォルダの参照]ダイアログを開く
lpIDList = SHBrowseForFolder(udtBI)

IF lpIDList > 0 THEN
  //選択したフォルダのパスを取得
  PathName = Space(256)
  SHGetPathFromIDList(lpIDList, PathName)
  //割り当てられたメモリを開放
  CoTaskMemFree(lpIDList)
  MessageBox(\"\", PathName)
ELSE
  MessageBox(\"\", \"キャンセル\")
END IF


コールバック関数は、初期フォルダを指定するとき必要になります。
よって、PowerBuilder では初期フォルダの指定は不可能だと思います。

付加情報:

PowerBuilder Version (記載なし)

Client SoftWare

OS Windows95
DBMS (記載なし)
Browser (記載なし)

Server SoftWare

OS (記載なし)
DBMS (記載なし)
WebServer (記載なし)

PowerSpaceの運営は、パワーフューチャー株式会社が行っております。
Copyright © 2013 Power Future Co., Ltd.