TNB Library
|
ドラッグコントロールアドインクラス [詳解]
#include <TnbMfcDrag.h>
クラス | |
struct | TDropParam |
ドロップコントロールパラメータ [詳解] | |
公開型 | |
enum | EDragNotifyCode { START = 0 , HOVER , LEAVE , CANCEL , INVALID , DROP , ISDROP } |
ドラッグ通知種別コード. [詳解] | |
enum | EDropCtrlCode { CANDROP = 100 } |
ドロップコントロールコード. [詳解] | |
公開メンバ関数 | |
bool | CanDragging (void) const |
[取得] ドラッグモード取得. [詳解] | |
bool | CanDropping (void) const |
[取得] ドロップモード取得. [詳解] | |
CDragAddinT (void) | |
コンストラクタ [詳解] | |
WORD | GetDragGroupID (void) const |
[取得] ドロップグループID取得 [詳解] | |
void | GetDropTargetMark (const IDrawable *&_draw, COLORREF &_color, int &_thick) const |
[取得] ドロップ先のマーク設定取得. [詳解] | |
DWORD | GetExStyle (void) const |
[取得] ウィンドウ拡張スタイル取得. [詳解] | |
HWND | GetSafeHwnd (void) const |
[取得] ウィンドウハンドル取得. [詳解] | |
DWORD | GetStyle (void) const |
[取得] ウィンドウスタイル取得. [詳解] | |
BOOL | ModifyStyle (DWORD dwRemove, DWORD dwAdd, UINT nFlags=0) |
[設定] ウィンドウスタイル変更. [詳解] | |
BOOL | ModifyStyleEx (DWORD dwRemove, DWORD dwAdd, UINT nFlags=0) |
[設定] ウィンドウ拡張スタイル変更. [詳解] | |
void | SetDraggingBitmap (CBitmapHandle bmp) |
[設定] ドラック中ビットマップ設定. [詳解] | |
void | SetDragGroupID (WORD w) |
[設定] ドロップグループID設定 [詳解] | |
void | SetDragMode (bool can) |
[設定] ドラッグモード設定. [詳解] | |
void | SetDropMode (bool can) |
[設定] ドロップモード設定. [詳解] | |
void | SetDropTargetMark (COLORREF color, int thick=0) |
[設定] ドロップ先のマーク設定. [詳解] | |
template<typename T > | |
void | SetDropTargetMark (const CDragAddinT< T > &other) |
[設定] ドロップ先のマーク設定. [詳解] | |
void | SetDropTargetMark (const IDrawable &draw) |
[設定] ドロップ先のマーク設定. [詳解] | |
BOOL | SetWindowPos (const CWnd *pWndInsertAfter, int x, int y, int cx, int cy, UINT nFlags) |
[設定] ウィンドウサイズポジション設定. [詳解] | |
BOOL | ShowWindow (int nCmdShow) |
[設定] ウィンドウ表示状態. [詳解] | |
~CDragAddinT (void) | |
デストラクタ [詳解] | |
静的公開メンバ関数 | |
static UINT | GetDragNotifyMessage (void) |
[取得] 通知用メッセージコード取得. [詳解] | |
限定公開メンバ関数 | |
bool | IsNofityMessage (UINT message) const |
[確認] 通知メッセージ確認. [詳解] | |
virtual int | OnBeginDrag (RECT &_rc, const POINT &po) |
[通知] ドラッグ開始. [詳解] | |
virtual void | OnDragNofity (UINT cmd, int draggingItem, int dropedItem) |
[通知] ドラッグ通知. [詳解] | |
bool | SendNofityMessage (CWnd *pWnd, WPARAM wParam, LPARAM lParam) const |
[通知] メッセージ通知. [詳解] | |
virtual LRESULT | WindowProc (UINT message, WPARAM wParam, LPARAM lParam) |
[通知] for processing Windows messages. [詳解] | |
ドラッグコントロールアドインクラス
本クラスを使用すると、ドラッグすることが可能になります。 ドラック開始時、ドラッグ中止時、ドロップ時にメッセージを親に通知します。 通知メッセージは以下のようになります。 \n message = MSG (テンプレートの引数リスト、参照) \n WPARAMの上位WORD = グループID( SetDragGroupID() 参照)。\n WPARAMの下位WORD = 通知種別( CDragAddinT::EDragNotifyCode ) 。 \n LPARAMの上位WORD = 相手コントロールID (コマンド種別がドラック開始やキャンセルの時は0固定)。 \n LPARAMの下位WORD = ドラックコントロールID 。 \n ※通知種別 ISDROP は、普通のコントロールだけど、ドロップ対象にしたい場合に使用します。
//= 宣言 typedef CDragAddinT<CStatic> CDragStatic; ; class CXXXX : public CDialog { ; CDragStatic m_dragText; // <- 元々 CStaticだったメンバを書き換えた ; afx_msg LRESULT OnDroped(WPARAM wParam, LPARAM lParam); ; //= 設定(グローバル) static UINT s_uDropMessage = CDragStatic::GetNotifyMessage(); BEGIN_MESSAGE_MAP(CXXXX, CDialog) //{{AFX_MSG_MAP(CMfcTestAppDlg) ; //}}AFX_MSG_MAP ON_REGISTERED_MESSAGE(s_uDropMessage, OnDroped) //←追加 END_MESSAGE_MAP() //= 処理(OnDroped() 内) LRESULT CXXXX::OnDroped(WPARAM wParam, LPARAM lParam) { switch( LOWORD(wParam) ) { case CDragStatic::START: // ドラック開始 TRACE1("ID = %d をドラッグ開始", LOWORD(lParam)); break; case CDragStatic::CANCEL: // キャンセル(ドラック終了) TRACE1("ID = %d のドラックを中止", LOWORD(lParam)); break; case CDragStatic::INVALID: // 無効(ドラック終了) TRACE1("ID = %d は許可できないところへドロップ", LOWORD(lParam)); break; case CDragStatic::DROP: // ドロップ(ドラック終了) TRACE2("ID = %d から %d へドラッグ", LOWORD(lParam), HIWORD(lParam)); break; case CDragStatic::HOVER: // ホバー(ドラック中) TRACE2("ID = %dが%dの上", LOWORD(lParam), HIWORD(lParam)); break; case CDragStatic::LEAVE: // ホバー終了(ドラック中) TRACE2("ID = %dが%dの上からはなれた", LOWORD(lParam), HIWORD(lParam)); break; case CDragStatic::ISDROP: // ドロップ確認 TRACE2("ID = %dが%dの上へ。IDOK ならドロップ可能に", LOWORD(lParam), HIWORD(lParam)); return HIWORD(lParam) == IDOK; } return 0; } |
TYP | 要素の型。CWnd のサブクラスである必須があります。 |
TnbMfcDrag.h の 124 行目に定義があります。
enum EDragNotifyCode |
ドラッグ通知種別コード.
通知メッセージのWPARAM の下位WORDに格納されています。
列挙値 | |
---|---|
START | ドラック開始. |
HOVER | ホバー(ドラック中). |
LEAVE | ホバー終了(ドラック中). |
CANCEL | キャンセル(ドラック終了). |
INVALID | 無効ドロップ(ドラック終了). |
DROP | 有効ドロップ(ドラック終了). |
ISDROP | ドロップ確認. |
TnbMfcDrag.h の 134 行目に定義があります。
enum EDropCtrlCode |
ドロップコントロールコード.
通知メッセージの WPARAM の下位WORDに格納されています。
列挙値 | |
---|---|
CANDROP | ドロップ可能かチェック時に通知します。 通知を受けたコントロールは LRESULT で true(ドロップ可能),false(不可能) を返します。 LPARAM は TDropParam のポインタが格納されます(必要に応じて変更します)。 |
TnbMfcDrag.h の 150 行目に定義があります。
CDragAddinT | ( | void | ) |
コンストラクタ
TnbMfcDrag.h の 178 行目に定義があります。
~CDragAddinT | ( | void | ) |
デストラクタ
TnbMfcDrag.h の 189 行目に定義があります。
bool CanDragging | ( | void | ) | const |
bool CanDropping | ( | void | ) | const |
WORD GetDragGroupID | ( | void | ) | const |
|
static |
void GetDropTargetMark | ( | const IDrawable *& | _draw, |
COLORREF & | _color, | ||
int & | _thick | ||
) | const |
[取得] ドロップ先のマーク設定取得.
[out] | _draw | 描画情報。 |
[out] | _color | カラー。 |
[out] | _thick | 太さ。 |
TnbMfcDrag.h の 279 行目に定義があります。
|
inherited |
[取得] ウィンドウ拡張スタイル取得.
本インスタンスが管理しているウィンドウの拡張スタイルを返します。
|
inherited |
[取得] ウィンドウハンドル取得.
本インスタンスが管理しているウィンドウのハンドルを返します。
|
inherited |
[取得] ウィンドウスタイル取得.
本インスタンスが管理しているウィンドウのスタイルを返します。
|
protected |
|
inherited |
[設定] ウィンドウスタイル変更.
dwRemove | 除去するスタイルを指定する。 |
dwAdd | 追加するスタイルを指定する。 |
nFlags | SetWindowPos() に渡すフラグ。0なら SetWindowPos() を呼びません。 |
TRUE | 成功. |
FALSE | 失敗. |
|
inherited |
[設定] ウィンドウ拡張スタイル変更.
dwRemove | 除去する拡張スタイルを指定する。 |
dwAdd | 追加する拡張スタイルを指定する。 |
nFlags | SetWindowPos() に渡すフラグ。0なら SetWindowPos() を呼びません。 |
TRUE | 成功. |
FALSE | 失敗. |
|
protectedvirtual |
[通知] ドラッグ開始.
[in,out] | _rc | アイテム範囲。inで ::GetWindowRect() した範囲が入っています(Window座標)。 |
[in] | po | マウスのポジション(Window座標)。 |
0 | ドラック出来ない. |
1以上 | コントロールID |
CDragDrawingListCtrlで再実装されています。
TnbMfcDrag.h の 418 行目に定義があります。
|
protectedvirtual |
[通知] ドラッグ通知.
cmd | コマンド. |
draggingItem | ドラッグ元アイテムID |
dropedItem | ドロップ先アイテムID |
TnbMfcDrag.h の 434 行目に定義があります。
|
protected |
void SetDraggingBitmap | ( | CBitmapHandle | bmp | ) |
[設定] ドラック中ビットマップ設定.
ドラック中の絵を指定できます。指定しない場合、コントロールの大きさでキャプチャした物を使います。
bmp | ビットマップ。 |
TnbMfcDrag.h の 219 行目に定義があります。
void SetDragGroupID | ( | WORD | w | ) |
[設定] ドロップグループID設定
w | グループ値。 |
TnbMfcDrag.h の 200 行目に定義があります。
void SetDragMode | ( | bool | can | ) |
void SetDropMode | ( | bool | can | ) |
void SetDropTargetMark | ( | COLORREF | color, |
int | thick = 0 |
||
) |
[設定] ドロップ先のマーク設定.
ドロップ可能のアイテムにマークを表示することが出来ます。
color | カラー。 |
thick | 太さ。0なら設定変更なし。 |
TnbMfcDrag.h の 263 行目に定義があります。
void SetDropTargetMark | ( | const CDragAddinT< T > & | other | ) |
[設定] ドロップ先のマーク設定.
ドロップ可能のアイテムにマークを表示することが出来ます。
other | コピー元。 |
TnbMfcDrag.h の 231 行目に定義があります。
void SetDropTargetMark | ( | const IDrawable & | draw | ) |
[設定] ドロップ先のマーク設定.
ドロップ可能のアイテムにマークを表示することが出来ます。
draw | 描画情報(Resize() を使用します)。複製を保持しますので、 draw は破棄してかまいません。 |
TnbMfcDrag.h の 251 行目に定義があります。
|
inherited |
[設定] ウィンドウサイズポジション設定.
子ウィンドウ、ポップアップ ウィンドウ、およびトップレベル ウィンドウのサイズ、位置、および Z オーダーを変更します。
pWndInsertAfter | Z オーダーでこの CWnd オブジェクトより前に配置される CWnd オブジェクトを識別します。このパラメータへは、 CWnd へのポインタか 次の値のいずれか 1 つを指定できます。
|
x | ウィンドウの新しい左辺の位置を指定します。 |
y | ウィンドウの新しい上辺の位置を指定します。 |
cx | ウィンドウの新しい幅を指定します。 |
cy | ウィンドウの新しい高さを指定します。 |
nFlags | サイズ変更オプションおよび位置指定オプションを指定します。このパラメータには、次の値を組み合わせて指定できます。
|
TRUE | 成功. |
FALSE | 失敗. |
|
inherited |
[設定] ウィンドウ表示状態.
nCmdShow | CWnd を表示する方法を指定します。次の値のいずれかになります。
|
TRUE | 成功. |
FALSE | 失敗. |
|
protectedvirtual |
[通知] for processing Windows messages.
メッセージ受信したらコールされます。
message | メッセージ |
wParam | WPARAM |
lParam | LPARAM |
CDragDrawingListCtrlで再実装されています。
TnbMfcDrag.h の 358 行目に定義があります。