etc.negui.event.events

イベントを模したもの。
基本的な定数や構造体のみ。 コントロール特有なものなんかはそのコントロールのmoduleで補完。
History:
1.100
  • sourcemodule変更(event -> events)。
  • source記述方法を大幅変更
template MixInNeGuiEvent()
Note:
非ポインタに変更可能な部分は変更すべき.
Inheritance:
処理を行わない場合は継承元へ引き継ぐべき。
History:
1.00β12
  • OnNonClientMouseXXX追加。
void OnCreate();
NeWindow作成時
void OnCreated();
OnCreat終了時
void OnSubClass();
サブクラス時。
Inheritance:
継承元がISubClassを継承しているのであればsuper.OnSubClassを呼ばなければならない。
History:
1.110
  • 新規作成。
bool OnSize(SIZE_TYPE SizeType , int Width , int Height );
サイズ変更時。
Params:
SIZE_TYPE SizeType
サイズ変更の種類。
int Width
サイズ変更後のクライアント領域の幅。
int Height
サイズ変更後のクライアント領域の高さ。
Returns:
処理を終了する場合はtrue、処理をWindowsに引き継ぐ場合はfalseを返す。
Messages:
  • WM_SIZE
Note:
パネルのおかげで出番が少なくなりました。
History:
1.00β17
  • program処理判定の追加。
void OnSizing(SIDEFLAG Sides , ref RECT Rect );
サイズ変更中。
Params:
SIDEFLAG Sides
変更中のウィンドウの辺の組み合わせ。
RECT Rect
変更中の矩形を示す領域。 必要であれば値を書き換える。
Messages:
  • WM_SIZING
void OnMoving(SIDEFLAG Sides , ref RECT Rect );
位置変更中。
Params:
SIDEFLAG Sides
変更中のウィンドウの辺の組み合わせ。
RECT Rect
変更中の矩形を示す領域。 必要であれば値を書き換える。
Messages:
  • WM_MOVING
void OnWindowPosChanging(ref WINDOWPOS WindowPos );
位置・サイズ・Z位置変更中。
Params:
WINDOWPOS WindowPos
新しい情報を受け取る領域。 必要であれば値を書き換える。
Messages:
  • WM_WINDOWPOSCHANGING
History:
1.110
  • sourceWindowPosの型変更(WINDOWPOS* -> ref WINDOWPOS)。
void OnWindowPosChanged(ref WINDOWPOS WindowPos );
位置・サイズ・Z位置変更。
Params:
WINDOWPOS WindowPos
変更情報を受け取る領域。
Messages:
  • WM_WINDOWPOSCHANGED
void OnMinMax(ref SIZE MaxSize , ref POINT MaxPos , ref SIZE MaxTrack , ref SIZE MinTrack );
最大位置とサイズ、最小・最大のトラッキングサイズ。
Params:
SIZE MaxSize
最大化時のサイズ。 必要であれば値を書き換える。
POINT MaxPos
最大化時の座標(左上)。 必要であれば値を書き換える。
SIZE MaxTrack
最大トラッキングサイズ。 必要であれば値を書き換える。
SIZE MinTrack
最小トラッキングサイズ。 必要であれば値を書き換える。
Messages:
  • WM_GETMINMAXINFO
History:
1.110
  • source引数全ての型変更(ポインタ -> 参照)。
  • sourceMaxSizeの型変更(POINT -> SIZE)。
  • sourceMaxTrackの型変更(POINT -> SIZE)。
  • sourceMinTrackの型変更(POINT -> SIZE)。
  • source戻り値変更(bool -> void)。
void OnEnterSizeMove();
位置・サイズが変更される。
変更される前に一度だけ実行される。
Messages:
  • WM_ENTERSIZEMOVE
void OnExitSizeMove();
位置・サイズが変更された。
Messages:
  • WM_EXITSIZEMOVE
void OnShowWindow(bool Show , SHOW_FLAG Flag );
表示状態が変更される。
Params:
bool Show
表示されようとしている場合はtrue、 非表示にされようとしている場合はfalse。
SHOW_FLAG Flag
ウィンドウの表示状態。
Messages:
  • WM_SHOWWINDOW
History:
1.00β17
  • 新規作成。
bool OnClose();
終了時の確認。
プログラムが終了しなければならないときに送られる。 この処理にてユーザーの確認を行うべき。
Returns:
trueの場合にthis.destroy()を呼び出す。
Messages:
  • WM_CLOSE
void OnDestroy();
破棄された。
Inheritance:
常にsuper.OnDestroyを呼ばなければならない。
Messages:
  • WM_DESTROY
Note:
NeWindowとかNeControlとかISubClassとかの終了処理が親にあるかもしれない。 super.OnDestroyの呼び出しは自身に影響が少ないであろう最後(scope(exit)とか)にすべき。
History:
1.00β19
  • programLogger削除。
void OnMeasureItem(ref MEASUREITEM Measure );
オーナードロー描画準備。
Params:
MEASUREITEM Measure
オーナードローコントロールのサイズ。 必要であれば値を書き換える。
Messages:
  • WM_MEASUREITEM
History:
1.110
  • sourceMeasureの型変更(MEASUREITEM* -> ref MEASUREITEM)。
void OnDrawItem(ITEM_ID Id , DRAWITEM* DrawItem );
オーナードロー描画。
History:
1.00β17
  • sourceあんまし意味無いけど引数追加。
void OnActive(WINDOW_ACTIVE Active , bool NotSmall , HWND NextWnd );

void OnActiveOther(in bool Active , in HANDLE OtherHandle );

bool OnInitMenu(Menu menu );
History:
1.00β20
  • source引数変更。
bool OnInitPupUpMenu(size_t Position , bool SystemFlag , Menu menu );
History:
1.00β20
  • sourceIdの型をITEM_IDからsize_tに変更。
  • sourceIdの名前をPositionに変更。
void OnMenuSelect(ITEM_ID Id , MENU_FLAG MenuFlag , Menu menu );
History:
1.00β20
  • source引数変更。
bool OnCommand(ITEM_ID Id , MESSAGETYPE MessageType , NeGui Sender );

bool OnMenuCommand(COMMAND_ID Id );

bool OnAccelerator(COMMAND_ID Id );

void OnContextMenu(NeGui CatchItem , int x , int y );
マウスを右クリック、コンテキストメニューボタンが押された。
x == y && x == 0xFFFFならばマウスではなくキーが押された。
Params:
NeGui CatchItem
マウスカーソルの下にあるアイテム。
int x
マウスカーソルのX座標。
int y
マウスカーソルのY座標。
Messages:
  • WM_CONTEXTMENU
History:
1.110
  • source名前変更(OnContexMenu -> OnContextMenu)。
HIT_TEST OnNonClientHitTest(HIT_TEST HitFlag , int x , int y );
History:
1.070
  • source名前変更。
typedef NonClientMouseEvent;
処理した場合はtrue、しなければfalse。(あんまし関係ないけど)
bool OnNonClientMouseLeftDown(HIT_TEST HitFlag , int x , int y );
マウスが非クライアント領域で左ボタンが押された
bool OnNonClientMouseLeftUp(HIT_TEST HitFlag , int x , int y );

bool OnNonClientMouseLeftClick(HIT_TEST HitFlag , int x , int y );

bool OnNonClientMouseLeftDoubleClick(HIT_TEST HitFlag , int x , int y );

bool OnNonClientMouseRightDown(HIT_TEST HitFlag , int x , int y );

bool OnNonClientMouseRightUp(HIT_TEST HitFlag , int x , int y );

bool OnNonClientMouseRightClick(HIT_TEST HitFlag , int x , int y );

bool OnNonClientMouseRightDoubleClick(HIT_TEST HitFlag , int x , int y );

bool OnNonClientMouseMiddleDown(HIT_TEST HitFlag , int x , int y );

bool OnNonClientMouseMiddleUp(HIT_TEST HitFlag , int x , int y );

bool OnNonClientMouseMiddleClick(HIT_TEST HitFlag , int x , int y );

bool OnNonClientMouseMiddleDoubleClick(HIT_TEST HitFlag , int x , int y );

bool OnNonClientMouseOtherButtonDown(HIT_TEST HitFlag , int x , int y );

bool OnNonClientMouseOtherButtonUp(HIT_TEST HitFlag , int x , int y );

bool OnNonClientMouseOtherButtonClick(HIT_TEST HitFlag , int x , int y );

bool OnNonClientMouseOtherButtonDoubleClick(HIT_TEST HitFlag , int x , int y );

bool OnNonClientMouseMove(HIT_TEST HitFlag , int x , int y );

void OnEnable(bool Enable );

void OnEnterFocus(NeGui LostedGui );

void OnExitFocus(NeGui NewGui );

void OnScroll(DIRECTION Direction , SCROLL Scroll , int Position , NeGui Sender );

void OnMouseMove(MOUSE_KEY Keys , int x , int y );
オブジェクト内でマウス移動[WM_MOUSEMOVE]
void OnMouseOver(MOUSE_KEY Keys , int x , int y );
マウスがオブジェクト内に入った。
void OnMouseHover(MOUSE_KEY Keys , int x , int y );
マウスがオブジェクト上に留まった。[WM_MOUSEHOVER]
void OnMouseLeave(MOUSE_KEY Keys , int x , int y );
マウスがオブジェクトの外に出た。[WM_MOUSELEAVE]
typedef MouseEvent;

bool OnMouseLeftDown(MOUSE_KEY Keys , int x , int y );
左ボタンが押された。[WM_LBUTTONDOWN]
bool OnMouseLeftUp(MOUSE_KEY Keys , int x , int y );
左ボタンが上げられた。[WM_LBUTTONUP]
bool OnMouseLeftClick(MOUSE_KEY Keys , int x , int y );
左ボタンがクリックされた。[WM_LBUTTONDOWN + WM_LBUTTONUP]
bool OnMouseLeftDoubleClick(MOUSE_KEY Keys , int x , int y );
左ボタンがダブルクリック[WM_LBUTTONDBLCLK]
bool OnMouseRightDown(MOUSE_KEY Keys , int x , int y );
右ボタンが押された。[WM_RBUTTONDOWN]
bool OnMouseRightUp(MOUSE_KEY Keys , int x , int y );
右ボタンが上げられた。[WM_RBUTTONUP]
bool OnMouseRightClick(MOUSE_KEY Keys , int x , int y );
右ボタンがクリックされた。[WM_RBUTTONDOWN + WM_RBUTTONUP]
bool OnMouseRightDoubleClick(MOUSE_KEY Keys , int x , int y );
右ボタンがダブルクリック[WM_RBUTTONDBLCLK]
bool OnMouseMiddleDown(MOUSE_KEY Keys , int x , int y );
ホイールが押された。[WM_MBUTTONDOWN]
bool OnMouseMiddleUp(MOUSE_KEY Keys , int x , int y );
ホイールが上げられた。[WM_MBUTTONUP]
bool OnMouseMiddleClick(MOUSE_KEY Keys , int x , int y );
ホイールがクリックされた。[WM_MBUTTONDOWN + WM_MBUTTONUP]
bool OnMouseMiddleDoubleClick(MOUSE_KEY Keys , int x , int y );
ホイールがダブルクリック[WM_MBUTTONDBLCLK]
bool OnMouseWhellDown(MOUSE_KEY Keys , int x , int y );
ホイールが下に回された。[WM_MOUSEWHELL]
bool OnMouseWhellUp(MOUSE_KEY Keys , int x , int y );
ホイールが上に回された。[WM_MOUSEWHELL]
bool OnMouseOtherButtonDown(MOUSE_KEY Keys , int x , int y );
X
bool OnMouseOtherButtonUp(MOUSE_KEY Keys , int x , int y );

bool OnMouseOtherButtonClick(MOUSE_KEY Keys , int x , int y );

bool OnMouseOtherButtonDoubleClick(MOUSE_KEY Keys , int x , int y );

bool OnChar(KEY Key , KEYDATA KeyData );
Returns:
処理を終了する場合はtrue、処理をWindowsに引き継ぐ場合はfalseを返す。
History:
1.00β17
  • 新規作成。
bool OnKeyDown(KEY Key , KEYDATA KeyData );
History:
1.00β16
  • othersかるーくドキュメント見てて勘違いだったかもしれないKeyData.keyupをassertから除外。
bool OnKeyPress(KEY Key , KEYDATA KeyData );

bool OnKeyUp(KEY Key , KEYDATA KeyData );
History:
1.021
  • othersバグかどうかも怪しいけど修正しといた。
void OnDropFiles(DropFile drop );

bool OnPaint(Canvas canvas , ref const(RECT) Rect , bool BackReDraw );

bool OnPrint(Canvas canvas , PRF Prf );

typedef OnEraseBackGroundDg;

OnEraseBackGroundDg OnEraseBackGround(Canvas canvas );

void OnTimer(in TIMER_ID Id );

void OnHotKey(HOTKEY_ID Id , HOTKEY HotKey , KEY VKey );

int OnNotify(ITEM_ID Id , NOTIFY* Notify );

bool OnOtherEvent(UINT Message , WPARAM wParam , LPARAM lParam );

void OnDisplayChange(int Bits , int Horizontal , int Vertical );

void OnChildCreate(NeGui ChildGui );

void OnChildDestroy(NeGui ChildGui );

typedef ChildEvent;

void OnChildMouseLeftDown(NeGui ChildGui , ref const(POINT) Point );

void OnChildMouseRightDown(NeGui ChildGui , ref const(POINT) Point );

void OnChildMouseMiddleDown(NeGui ChildGui , ref const(POINT) Point );

void OnChildMouseOtherButtonDown(NeGui ChildGui , ref const(POINT) Point );

bool OnQueryEndSession(bool TaskList , END_SESSION EndSession );
History:
1.021
  • 新規作成。
void OnEndSession(bool ExitSession , END_SESSION EndSession );
History:
1.021
  • 新規作成。
void OnChild(WPARAM wParam , LPARAM lParam );

struct EVENTS(NEGUITYPE : NeGui);
History:
1.100
  • source名前変更(EVENTLOOP -> EVENTS)。
  • source構造体そのものに型を設定
  • bugOnMouseHoverでOnMouseLeaveを呼んでいた
  • bugWM_BUTTONUPでWM_MBUTTONUPがfall through
string WM_CREATE(in string NeGuiObject = _NEGUIOBJECT, in string hWnd = _HWND, in string Message = _MESSAGE, in string wParam = _WPARAM, in string lParam = _LPALAM);
History:
1.00β19
  • programLogger削除
string WM_GETMINMAXINFO(in string NeGuiObject = _NEGUIOBJECT, in string hWnd = _HWND, in string Message = _MESSAGE, in string wParam = _WPARAM, in string lParam = _LPALAM);
History:
1.110
  • programOnMinMaxに合わせる。
template MixInNeGuiEventProc(NEGUI : NeGui)
History:
1.00β12
  • WM_NCLBUTTONDOWN, WM_NCRBUTTONDOWN, WM_NCMBUTTONDOWN, WM_NCXBUTTONDOWN, WM_NCLBUTTONUP, WM_NCRBUTTONUP, WM_NCMBUTTONUP, WM_NCXBUTTONUP, WM_NCLBUTTONDBLCLK, WM_NCRBUTTONDBLCLK, WM_NCMBUTTONDBLCLK, WM_NCXBUTTONDBLCLKの追加。 WM_XBUTTONUP, WM_XBUTTONDOWN, WM_XBUTTONDBLCLKを拾ってなかったのでそれを修正。