PB 電子会議室

コメント

発言No. 更新日 題名(クリックすると発言内容と関連するコメントが表示されます)
1050 98/03/26 17:56:57 RE(13)::複数ファイル処理です By てとらぽっと
1047 98/03/26 10:26:10 RE(12):複数ファイル処理です By nari
1046 98/03/26 10:22:49 RE(11):なんとかできました&サンプルスクリプト By nari
1042 98/03/25 16:59:36 RE(10):複数ファイル処理です By てとらぽっと
1040 98/03/25 16:40:01 RE(9):おめでとうございます!!! By Taka
1039 98/03/25 16:10:31 RE(8):なんとかできました&サンプルスクリプト By てとらぽっと
1024 98/03/24 22:15:40 RE(7):pbm_dropfiles がアヤシイと思う By Taka
1018 98/03/24 18:25:02 RE(6):MDIフレームにファイルをドロップしたい(APIの質問) By nari
1017 98/03/24 18:22:33 RE(5):MDIフレームにファイルをドロップしたい(APIの質問) By nari
1006 98/03/24 12:20:36 RE(4):コールできました、あ、エラー? By てとらぽっと
992 98/03/23 18:56:28 RE(3):コールできました、あ、エラー? By Taka
987 98/03/23 18:26:45 RE(2):コールできました、あ、エラー? By てとらぽっと
970 98/03/23 13:01:28 RE(1):ムム、やってますね? By Taka
967 98/03/23 12:09:31 MDIフレームにファイルをドロップしたい(APIの質問) By てとらぽっと

カテゴリ:旧電子会議室
日付:1998年03月24日 18:22 発信者:nari
題名:RE(5):MDIフレームにファイルをドロップしたい(APIの質問)

もう解決されたでしょうか?

>MDIフレームにファイルをドロップして開く、というユーザーインターフェースを
>作ろうとして、APIの呼び出しでつまずいています。

DragQueryFilesの引数について気付いた点です。

PROTOTYPE宣言は
  UINT DragQueryFile(HDROP hDrop, UINT iFile, LPTSTR lpszFile, UINT cch) 
です。


(1) hDrop は 内部ドロップ構造体へのハンドルで、WM_DROPFILESメッセージから渡される
    ものです。
      # つまりは pbm_dropfiles から渡される引数 long handle がそれです。
(2) iFile は 処理すべきファイル数ですので、Dropしたファイルが一個なら 1、二個なら 2 を
    指定します。
      # iFile に0xFFFFFFFFを与えてDragQueryFilesを呼び出すとDropされたファイル数を
      # 返却するそうです
(3) lpszFile はファイル名が格納される文字列で、ポインタ渡しですのでPBでは REF で
     渡す必要があります。
      # 文字列格納領域の先頭へのポインタですので、領域確保してから先頭アドレスを
      # 渡します。
      # PBでは string変数にdummyの文字列を格納してあげればいいです。
(4) cch はバッファサイズですので、(3)で確保した領域のbyte数を与えます。


pbm_dropfilesを与えたuser eventで以下のようなscriptを書けばいいんじゃないでしょうか?

// variables
long hDrop; // structure handle
UINT iFile; // drop file number
UINT iBuffSize; // buffer length
UINT iFileNmaeSize // file name length
string strFile; // buffer

// init procces
hDrop = handle; // get structure handle
iBuffSize = DragQueryFile(hDrop, 0, NULL, 0); // buffer size
strFile = space(iBuffSize + 1); // allocate buffer
iFile = DragQueryFile(hDrop, 0xFFFFFFFF, strFile, 0); // get file number

// call DragQueryFile()
iFileNmaeSize = DragQueryFile(hDrop, iFile, strFile, iBuffSize); // get drop file name

未compileですんで、参考まで。

ではでは。

付加情報:

PowerBuilder Version (記載なし)

Client SoftWare

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

Server SoftWare

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

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