Example #1
0
BOOL TRecvDlg::EventButton(UINT uMsg, int nHitTest, POINTS pos)
{
	switch (uMsg)
	{
	case WM_RBUTTONUP:
		if (!IsNewShell())
			PopupContextMenu(pos);
		return	TRUE;
	}
	return	FALSE;
}
Example #2
0
/**
 * WM_MOUSEMOVE メッセージハンドラ
 *  ・ドラッグ中ならば動的スクロール処理を行う
 */
void CTouchListCtrl::OnMouseMove(UINT nFlags, CPoint point)
{
	if (!m_bDragging && m_bStopDragging) {
		return;
	}

	if( m_bDragging ) {
		int dx = point.x - m_ptDragStart.x;
		int dy = point.y - m_ptDragStart.y;

		DWORD dwNow = GetTickCount();
//		MZ3_TRACE(L"CTouchListCtrl::OnMouseMove : 0x%X\n", dwNow);

		// dx,dyのドラッグ量に応じて、ドラッグ開始かどうかを判定する
		// m_bPanDragging, m_bVerticalDragging, m_drPanScrollDirection が設定される
		MySetDragFlagWhenMovedPixelOverLimit(dx, dy);

		// 縦スクロール中か?
		if (m_bVerticalDragging) {
			if (theApp.m_Platforms.WM6_5 || theApp.m_Platforms.WM6_5_1) {
				// WM6.5 以降であれば無効
			} else {
				//if( m_bCanSlide ){
				//	SetSelectItem( m_iDragStartItem );
				//}
				// 縦スクロール中
				// グーのカーソルに変更
				::SetCursor( AfxGetApp()->LoadCursor(IDC_GRABBING_CURSOR) );

				// 縦ドラッグ処理
	//			MZ3LOGGER_INFO(util::FormatString(L"OnMouseMove : 前回からの経過時間=%d[msec] (%d)", dwNow - m_dwLastDrawTick, dwNow));
				ScrollByMoveY( point.y );

				// ドラッグ開始時のN画面確保用フラグを解除しておく
				m_bFullPageDrawForBlackScrollStart = false;

	#ifdef WINCE
				if( !IsScrollWithBk() ){
					// WMで、かつ背景同時スクロールでない場合は遅延再描画
					MySetRedrawTimer( TIMER_INTERVAL_TOUCHLIST_SCROLLREDRAW_L );
				}
	#endif
				// 慣性スクロール情報取得
				m_autoScrollInfo.push( GetTickCount(), point );
			}
		} else if( m_bPanDragging ){
			// 横スクロール中
			// マウスポインタ変更
			switch( m_drPanScrollDirection ){
				case PAN_SCROLL_DIRECTION_LEFT:
					// 左方向
					::SetCursor( AfxGetApp()->LoadCursor(IDC_ARROW_LEFT_CURSOR) );
					break;
				case PAN_SCROLL_DIRECTION_RIGHT:
					// 右方向
					::SetCursor( AfxGetApp()->LoadCursor(IDC_ARROW_RIGHT_CURSOR) );
					break;
			}
		} else {
			::SetCursor( ::LoadCursor(NULL, IDC_ARROW) );
#ifdef WINCE
			// フォーカス矩形を表示
			DrawItemFocusRect( m_iDragStartItem );
			// タップ長押しでソフトキーメニュー表示
			// (指先が微動した時のため)
			SHRGINFO RGesture;
			RGesture.cbSize     = sizeof(SHRGINFO);
			RGesture.hwndClient = m_hWnd;
			RGesture.ptDown     = point;
			RGesture.dwFlags    = SHRG_RETURNCMD;
			if (::SHRecognizeGesture(&RGesture) == GN_CONTEXTMENU) {
				// 長押しした
				// フォーカス矩形を消す
				DrawItemFocusRect( m_iDragStartItem );

				// WM_LBUTTONUPと同様にドラッグ終了処理を行う

				// キャプチャ終了
				ReleaseCapture();
				// 遅延描画タイマーのリセット
				MyResetRedrawTimer();
				// 選択状態の設定
				SetSelectItem( m_iDragStartItem );
				RedrawItems( m_iDragStartItem , m_iDragStartItem );
				// オフセットの調整(念のため)
				MyAdjustDrawOffset();
				m_autoScrollInfo.clear();

				// ドラッグフラグクリア
				m_bDragging = false;
				m_bPanDragging = false;
				m_bVerticalDragging = false;
				m_drPanScrollDirection = PAN_SCROLL_DIRECTION_NONE;

				// メニューポップアップ
				ClientToScreen(&point);
				PopupContextMenu(point);
				return;
			}
			// フォーカス矩形を消す
			DrawItemFocusRect( m_iDragStartItem );
#endif
		}

	}

	//CListCtrl::OnMouseMove(nFlags, point);
}
Example #3
0
/**
 * WM_LBUTTONDOWN メッセージハンドラ
 *  ・ドラッグを開始する
 */
void CTouchListCtrl::OnLButtonDown(UINT nFlags, CPoint point)
{
	if (!m_bDragging && m_bStopDragging) {
		return;
	}

	MZ3_TRACE( L"OnLButtonDown()\n");

	// フォーカスを設定する
	SetFocus();

	// オフセットのずれを調整
	MyAdjustDrawOffset();
	// 慣性スクロール停止
	MyResetAutoScrollTimer();

	m_iDragStartItem = HitTest( point );

	//if( !m_bCanSlide ){
	//	SetSelectItem( m_iDragStartItem );
	//}
#ifdef WINCE
	// フォーカス矩形を表示
	DrawItemFocusRect( m_iDragStartItem );
	// タップ長押しでソフトキーメニュー表示
	SHRGINFO RGesture;
	RGesture.cbSize     = sizeof(SHRGINFO);
	RGesture.hwndClient = m_hWnd;
	RGesture.ptDown     = point;
	RGesture.dwFlags    = SHRG_RETURNCMD;
	if (::SHRecognizeGesture(&RGesture) == GN_CONTEXTMENU) {
		// 長押しした
		// フォーカス矩形を消す
		DrawItemFocusRect( m_iDragStartItem );
		// 項目を選択する
		SetSelectItem( m_iDragStartItem );
		RedrawItems( m_iDragStartItem , m_iDragStartItem );
		// メニューをポップアップ
		ClientToScreen(&point);
		PopupContextMenu(point);
		return;
	}
	// フォーカス矩形を消す
	DrawItemFocusRect( m_iDragStartItem );
#endif

	// ドラッグ開始
	m_bDragging = true;
	m_ptDragStart = point;
	m_iDragLine = 0;
	m_offsetPixelY = 0;

	// キャプチャ開始
	SetCapture();

	// 慣性スクロール情報取得
	m_autoScrollInfo.push( GetTickCount(), point );

	// 標準処理を呼ぶとキャプチャとかWM_LBUTTONUPが怪しいので呼ばない
	// とりあえずクリック処理として
	//  ・アイテムの選択
	//  ・フォーカスの設定
	//  ・クリック通知メッセージを親に送る
	// をやってるが、足りなかったら追加しましょ
	//CListCtrl::OnLButtonDown(nFlags, point);
}
Example #4
0
/*
	Context Menu event call back
*/
BOOL TRecvDlg::EvContextMenu(HWND childWnd, POINTS pos)
{
	PopupContextMenu(pos);
	return	TRUE;
}