掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
タブコントロールにドロップするには? (ID:55337)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
>> DragAcceptFiles( hWnd, TRUE ); 指定すべき hWnd が違っているかもしれませんね。 ダイアログもタブコントロールもその上に載っているコントロールも 全てウィンドウなので、それぞれ別の hWnd ハンドルを持っている はずです。 全ての hWnd ハンドルについて(ひとつづつ) DragAcceptFiles() してみるのはどうかな。 案その2. ダイアログリソースのところで、ウィンドウスタイル WS_EX_ACCEPTFILES を加えてみるとか。 (本質的に DragAcceptFiles() するのと同じだが) ↓の例では DIALOG,TABCONTROL,EDITCONTROL に付いている。 --------------------------------------------------- IDD_ONLYDLG_DIALOG DIALOGEX 0, 0, 159, 108 STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU EXSTYLE WS_EX_ACCEPTFILES | WS_EX_APPWINDOW CAPTION "OnlyDlg" FONT 9, "MS Pゴシック" BEGIN DEFPUSHBUTTON "OK",IDOK,102,7,50,14,0,WS_EX_ACCEPTFILES PUSHBUTTON "キャンセル",IDCANCEL,102,23,50,14 EDITTEXT IDC_EDIT1,28,30,40,14,ES_AUTOHSCROLL,WS_EX_ACCEPTFILES CONTROL "Tab1",IDC_TAB1,"SysTabControl32",0x0,28,62,50,30, WS_EX_ACCEPTFILES END --------------------------------------------------- ///////////////////////////////////////////////// DragAcceptFiles() で登録していないウィンドウに 別アプリから WM_DROPFILES を送りつけるとどうなるか。 答えは、ちゃんと受け取ります。 WM_DROPFILESを送りつけるプログラムはこんなに簡単。 以下MFCダイアログアプリを生成、ボタン一つを配置して その押下ハンドラを作成。 void CSendwmdropDlg::OnButton1() { CWnd * pWnd = GetDesktopWindow(); if( pWnd == NULL ) return; BOOL bDone = FALSE; for( pWnd = pWnd->GetTopWindow(); pWnd; pWnd = pWnd->GetNextWindow( GW_HWNDNEXT )) { CString cs; pWnd->GetWindowText( cs ); if( cs == "あなたのアプリのウィンドウタイトル") { pWnd->SendMessage( WM_DROPFILES, 0, 0 ); return; } } }
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.