トップページ
ひらく | たたむ | ページトップ
↓マウスで反転選択した文字を検索
Win32API
   
ページ内検索 ページ外検索
検索したい文字を入力して
ENTERを押すと移動します。
\n
[ トップページ ]
[ ____CommandPrompt ] [ ____JScript ] [ ____MySQL ] [ ____Cygwin ] [ ____Java ] [ ____Emacs ] [ ____Make ] [ ____Perl ] [ ____Python ] [ ____OpenGL ] [ ____C# ] [ ____StyleSheet ] [ ____C++ ] [ ____Winsock ] [ ____Thread ] [ ____VisualStudio ] [ ____C ] [ ____Win32API ] [ ____Lua ] [ ____PhotoShop ]
ヘッダ検索
___

■ DragDropをうけつける


  SAMPLE
     ドラッグドロップしたパスを表示 
    


    DragDropを受信可能にする。
    ウィンドウ以外でもコントロールならば、Dialogでも何でも受け付けることができる。

    #include< ShellAPI.h>
    #pragma comment( lib, "Shell32.lib" )

    HWND  hWnd = CreateWindowEx(
                                WS_EX_ACCEPTFILES,  // スタイルにこのフラグをたてる
                                "test" , title,
                                WS_OVERLAPPEDWINDOW | WS_VISIBLE,
                                100, 100,
                                w, h ,
                                NULL , NULL , hInstance , NULL
                                );


    dlgProc() {

      case WM_INITDIALOG:
        DragAcceptFiles( hWnd, TRUE );
        return TRUE;


        // ドロップされた時のイベントコールバック
      case WM_DROPFILES:
        {        
          // ドロップされたファイル数を取得して
          int nr = DragQueryFile( wp, -1, NULL, 0 );

          // そのパスを取得する。
          char buf[256];
          for( int i=0; i< nr; i++ ){
            DragQueryFile( wp, i, buf, sizeof(buf) );
          } 

          DragFinish( wp );
        }
        return TRUE;
    }

___

■ DragAcceptFiles

SYNTAX DragAcceptFiles( HWND, BOOL ); DESC 指定 wnd に対して, DD の受理を設定 WM_DROPFILES が届く
     DragAcceptFiles( hWnd, true );
TCHAR str[NAME_SIZE ]; DragQueryFile( (HDROP)wp, 0, str, sizeof(str) ); DragFinish( (HDROP)wp );
___

■ DragQueryFile

SYNTAX UINT DragQueryFile( HDROP, // file 情報を含む構造体ID. WM_DROPFILES::wp にある. UINT iFile, // query する file idx ( 複数の場合 ) LPSTR str, UINT szBuf // ); RET File の個数 || Buffer DESC filepath, 個数を取得する
     DragQueryFile( (HDROP)wp, 0, str, sizeof(str) );

    // 解放
    DragFinish();
___

■ DragFinish

SYNTAX void DragFinish( HDROP hDrop ); DESC Windows が file 名転送のために 確保した Memory を開放 Resource が Interface を超える例

    wndProc() {

      case WM_DROPFILES:
        SetForegroundWindow( hWnd );

        DragQueryFile();

        DragFinish();
    }

___

■ CreateWindowEx

SYNTAX hWndClient = CreateWindowEx( WS_EX_CLIENTEDGE, // 追加パラメータ "MDICLIENT", NULL, WS_CHILD | WS_VISIBLE | WS_CLIPCHILDREN, 0, 0, 0, 0, // 意味なし hWnd, (HMENU)0, hInst, &ccs );

NINJAIDX 17