Beispiel #1
0
long CModuleControlLong::GetValue() {
  if (m_hSlider)
    return GetSliderValue();

  long lValue = GetEditValue();
  if (lValue < m_iMin) lValue = m_iMin;
  if (lValue > m_iMax) lValue = m_iMax;
  return lValue;
}
Beispiel #2
0
void CModuleControlLong::UpdateValue(long lValue) {
  if (m_hSlider && GetSliderValue() != lValue) {
    m_hSlider.SendMessage(TBM_SETPOS, true, lValue);
  }
  if (!m_hEdit.GetWindowTextLength() || GetEditValue() != lValue)
  {
    double dValue = lValue*1.0 / m_iDivisor;
    CString sValue;
    sValue.Format(TEXT("%g"), dValue);
    m_hEdit.SetWindowText(sValue);
  }
}
static LRESULT CALLBACK HSBColorSelectControlWindowProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
	switch (message) 
	{
	case WM_ERASEBKGND:
		return TRUE;

	case WM_PAINT:
		{
			CHSBWindow *pData = (CHSBWindow *)GetWindowLongPtr(hWnd, 0);
			PAINTSTRUCT ps;
			HDC hdc = BeginPaint(hWnd, &ps);
			pData->OnPaint(hdc);
			EndPaint(hWnd, &ps);
		}
		return 0;

	case WM_COMMAND:
		{
			CHSBWindow *pData = (CHSBWindow *)GetWindowLongPtr(hWnd, 0);

			switch(HIWORD(wParam))
			{
			case EN_CHANGE:
				if (pData->m_Locked == 0)
				{
					uint32_t R = pData->m_Color.R;
					uint32_t G = pData->m_Color.G;
					uint32_t B = pData->m_Color.B;

					if ((HWND)lParam == pData->m_hwndREdit)
					{
						R = GetEditValue(pData->m_hwndREdit);
					}
					else if ((HWND)lParam == pData->m_hwndGEdit)
					{
						G = GetEditValue(pData->m_hwndGEdit);
					}
					else if ((HWND)lParam == pData->m_hwndBEdit)
					{
						B = GetEditValue(pData->m_hwndBEdit);
					}
					else
					{
						return 0;
					}

					pData->OnColorChanged(R, G, B);

					return 0;
				}
				break;
			}
		}
		break;

	case WM_VSCROLL:
		if (LOWORD(wParam) == SB_THUMBPOSITION)
		{
			CHSBWindow *pData = (CHSBWindow *)GetWindowLongPtr(hWnd, 0);
			if (pData->m_Locked == 0) 
			{
				if ((HWND)lParam == pData->m_hwndRUpdown)
				{
					pData->OnColorChanged(HIWORD(wParam), pData->m_Color.G, pData->m_Color.B);
				}
				else if ((HWND)lParam == pData->m_hwndGUpdown)
				{
					pData->OnColorChanged(pData->m_Color.R, HIWORD(wParam), pData->m_Color.B);
				}
				else if ((HWND)lParam == pData->m_hwndBUpdown)
				{
					pData->OnColorChanged(pData->m_Color.R, pData->m_Color.G, HIWORD(wParam));
				}
			}
		}
		return 0;

	case WM_ACTIVATE:
		if ((LOWORD(wParam) == WA_INACTIVE) && ((HWND)lParam != hWnd)) 
		{
			CHSBWindow *pData = (CHSBWindow *)GetWindowLongPtr(hWnd, 0);
			pData->m_Loop = FALSE;
		}
		return 0;

	case WM_MOUSEMOVE:
	case WM_LBUTTONDOWN:
	case WM_LBUTTONUP:
		{
			CHSBWindow *pData = (CHSBWindow *)GetWindowLongPtr(hWnd, 0);
			pData->OnMessage(message, wParam, lParam);
		}
		return 0;
		
	case WM_NCHITTEST:
		{
			CHSBWindow *pData = (CHSBWindow *)GetWindowLongPtr(hWnd, 0);
			POINT pt;
			pt.x = GET_X_LPARAM(lParam); 
			pt.y = GET_Y_LPARAM(lParam); 
			ScreenToClient(hWnd, &pt);
			if (pData->HitTest(pt.x, pt.y) == -1) 
				return HTCAPTION;
		}
		break;

	case WM_KEYDOWN:
		if (wParam == 27)
		{
			CHSBWindow *pData = (CHSBWindow *)GetWindowLongPtr(hWnd, 0);
			pData->m_Loop = FALSE;
		}
		break;

	}

	return DefWindowProc(hWnd, message, wParam, lParam);
};
Beispiel #4
0
LRESULT CModuleControlLong::OnEditChange(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled) {
  UpdateValue(GetEditValue());
  return 0;
}