コード例 #1
0
bool TUI_CustomControl::End    (TShiftState _Shift){
	switch(action){
	case etaSelect: return SelectEnd(_Shift);
	case etaAdd: 	return AddEnd(_Shift);
	case etaMove: 	return MovingEnd(_Shift);
	case etaRotate: return RotateEnd(_Shift);
	case etaScale: 	return ScaleEnd(_Shift);
    }
    return false;
}
コード例 #2
0
LOCAL void ListBox_DoSpecialSelect(HWND hWindow, BOOL fDoubleClick, int x, int y, UINT keyFlags)
/***********************************************************************/
{
// get the listbox data pointer
LPLISTBOXDATA lpData = ListBox_GetData(hWindow);
if (!lpData)
	{
	FORWARD_WM_LBUTTONDOWN(hWindow, fDoubleClick, x, y, keyFlags, ListBox_CallWindowProc);
	return;
	}

// give us focus on a mouse down
SetFocus(hWindow);

// initialize the dragging
SelectBegin(hWindow, x, y);

// start as if we had a mouse move
Select_OnMouseMove(hWindow, x, y, keyFlags);

// dragging loop                      
while (lpData->fCapture)
	{  
	MSG msg;
	// Look for mouse, keyboard, and timer messages. 
	// keystroke messages are retrieved to avoid the message
	// queue from getting full
	while ( !PeekMessage(&msg, NULL, WM_MOUSEFIRST, WM_MOUSELAST, PM_REMOVE) &&
			!PeekMessage(&msg, NULL, WM_KEYFIRST, WM_KEYLAST, PM_REMOVE) &&
       		!PeekMessage(&msg, NULL, WM_TIMER, WM_TIMER, PM_REMOVE)) 
	   	WaitMessage();
	switch(msg.message)
 		{
    	case WM_MOUSEMOVE:
			HANDLE_WM_MOUSEMOVE(msg.hwnd, msg.wParam, msg.lParam, Select_OnMouseMove);
		break;
		case WM_TIMER:
			HANDLE_WM_TIMER(msg.hwnd, msg.wParam, msg.lParam, Select_OnTimer);
		break;
	 	case WM_LBUTTONUP: 
			HANDLE_WM_LBUTTONUP(msg.hwnd, msg.wParam, msg.lParam, Select_OnLButtonUp);
		break;
	 	default:
    		// Process messages we don't handle
	   		TranslateMessage(&msg);
	   		DispatchMessage(&msg);
		break;      
		}
	}

// process the drag and cleanup
SelectEnd(hWindow);
}