コード例 #1
0
static int _ForwardMouseOverMsg(FRAMEWIN_Handle hWin, WM_MESSAGE* pMsg) {
    GUI_PID_STATE* pState = (GUI_PID_STATE *)pMsg->Data.p;
    WM_HWIN hBelow;
    pState->x += WM_GetWindowOrgX(hWin);
    pState->y += WM_GetWindowOrgY(hWin);
    hBelow = WM_Screen2hWin(pState->x, pState->y);
    if (hBelow && (hBelow != hWin)) {
        pState->x -= WM_GetWindowOrgX(hBelow);
        pState->y -= WM_GetWindowOrgY(hBelow);
        WM__SendMessage(hBelow, pMsg);
        return 1;
    }
    return 0;
}
コード例 #2
0
/*********************************************************************
*
*       _cbWin
*
* Purpose:
*   Callback routine of window which draws the content of the memory device
*/
static void _cbWin(WM_MESSAGE * pMsg) {
  WM_HWIN hWin;
  int xPos, yPos, xSize, ySize;
  GUI_MEMDEV_Handle hMem;

  hWin = pMsg->hWin;
  switch (pMsg->MsgId) {
  case WM_PAINT:
    //
    // Get window position
    //
    xPos = WM_GetWindowOrgX(hWin);
    yPos = WM_GetWindowOrgY(hWin);
    xSize = WM_GetWindowSizeX(hWin);
    ySize = WM_GetWindowSizeY(hWin);
    //
    // Draw memory device
    //
    WINDOW_GetUserData(hWin, &hMem, sizeof(hMem));
    GUI_MEMDEV_WriteAt(hMem, xPos, yPos);
    //
    // Draw surrounding frame
    //
    GUI_DrawRect(0, 0, xSize - 1, ySize - 1);
    break;
  }
}
コード例 #3
0
/*********************************************************************
*
*       _cbTransWindow
*/
static void _cbTransWindow(WM_MESSAGE* pMsg) {
  static GUI_PID_STATE   StateOld;
  GUI_PID_STATE        * pState;
  GUI_PID_STATE          StateNew;
  GUI_PID_STATE          State;
  WM_HWIN                hBelow;
  WM_HWIN                hWin;
  
  hWin = pMsg->hWin;
  GUI_PID_GetState(&StateNew);
  State    = ((StateNew.x == -1) && (StateNew.y == -1)) ? StateOld : StateNew;
  StateOld = State;
  switch (pMsg->MsgId) {
  case WM_PAINT:
    State.x -= WM_GetWindowOrgX(hWin);
    State.y -= WM_GetWindowOrgY(hWin);
    _DrawEye(EYE_X1, EYE_Y, State.x, State.y, EYE_RX, EYE_RY);
    _DrawEye(EYE_X2, EYE_Y, State.x, State.y, EYE_RX, EYE_RY);
    break;
  case WM_TOUCH:
    if (pMsg->Data.p) {
      pState = (GUI_PID_STATE *)pMsg->Data.p;
      if (pState->Pressed) {
        if (!_ClickedOutsideArea(pState->x, pState->y) || WM_HasCaptured(hWin)) {
          WM_SetCaptureMove(hWin, pState, MIN_VISIBILITY, 0);
        } else {
          //
          // Transfer the message to the underlying window, since the transparent area has been clicked
          //
          hBelow = WM_Screen2hWinEx(hWin, State.x, State.y);
          if (hBelow) {
            pState->x = State.x - WM_GetWindowOrgX(hBelow);
            pState->y = State.y - WM_GetWindowOrgY(hBelow);
            WM_SendMessage(hBelow, pMsg);
          }
        }
      }
    }
    break;
  default:
    WM_DefaultProc(pMsg);
  }
}
コード例 #4
0
ファイル: MENU_Popup.c プロジェクト: Liu1992/GasSub_LPC1788
/*********************************************************************
*
*       MENU_Popup
*/
void MENU_Popup(MENU_Handle hObj, WM_HWIN hDestWin, int x, int y, int xSize, int ySize, int Flags) {
  GUI_USE_PARA(Flags);
  if (hObj && hDestWin) {
    MENU_Obj* pObj;
    WM_LOCK();
    pObj = MENU_H2P(hObj);
    if (pObj) {
      pObj->Flags  |= MENU_SF_POPUP;
      pObj->Width   = ((xSize > 0) ? xSize : 0);
      pObj->Height  = ((ySize > 0) ? ySize : 0);
      x            += WM_GetWindowOrgX(hDestWin);
      y            += WM_GetWindowOrgY(hDestWin);
      MENU_SetOwner(hObj, hDestWin);
      WM_AttachWindowAt(hObj, WM_HBKWIN, x, y);
      MENU__SendMenuMessage(hDestWin, hObj, MENU_ON_OPEN, 0);
    }
    WM_UNLOCK();
  }
}
コード例 #5
0
/*********************************************************************
*
*       _cbCallbackFramewin
*
* Purpose:
*   Handles the scroll messages of the scrollbar
*/
static void _cbCallbackFramewin(WM_MESSAGE * pMsg) {
  WM_HWIN hDlg;
  hDlg = pMsg->hWin;
  switch (pMsg->MsgId) {
    case WM_NOTIFY_PARENT:
      if (pMsg->Data.v == WM_NOTIFICATION_VALUE_CHANGED) {
        if (pMsg->hWinSrc == WM_GetScrollbarH(hDlg)) {
          int xPos, yPos;
          WM_SCROLL_STATE ScrollState;
          WM_GetScrollState(pMsg->hWinSrc, &ScrollState);
          xPos = WM_GetWindowOrgX(WM_GetParent(_hDlg)) - ScrollState.v;
          yPos = WM_GetWindowOrgY(_hDlg);
          WM_MoveTo(_hDlg, xPos, yPos);
        }
      }
      break;
    default:
      WM_DefaultProc(pMsg);
  }
}
    bool WriteValueToDataPointAtKeyPressAndJumpToSpecificDisplay::HandleKeyEvent(Keys KeyID)
    {
      switch(KeyID)
      {
        case MPC_OK_KEY:
        {
          int currentValue = mpDataPoint->GetAsInt();

          if (currentValue == mCheckState)
          {
            //make sure observers are notified (NotifyObservers is protected)
            if (currentValue != mpDataPoint->GetMinAsInt())
              mpDataPoint->SetAsInt( mpDataPoint->GetMinAsInt() );
            else
              mpDataPoint->SetAsInt( mpDataPoint->GetMaxAsInt() );
          }

          mpDataPoint->SetAsInt(mCheckState);
                    
          if( mpDisplay )
          {
#ifdef __FADE___
            DisplayController::GetInstance()->Push(mpDisplay, 224, WM_GetWindowOrgY(GetWMHandle()));
#else
            DisplayController::GetInstance()->Push(mpDisplay);
#endif // __FADE___
          }
          return true;
        }

        case MPC_ESC_KEY:
          DisplayController::GetInstance()->Pop();
          return true;
      }
      return false;
    }
コード例 #7
0
ファイル: WM_GetOrg.c プロジェクト: byxob/calendar
/*********************************************************************
*
*       WM_GetOrgY
*/
int WM_GetOrgY(void) {
  return WM_GetWindowOrgY(GUI_Context.hAWin);
}
コード例 #8
0
static void DistortionProc(WM_MESSAGE* pMsg)
{
	int x, y;
	int NCode,Id;
	ProcessCommComponent(pMsg, &hCOMPcomm);
	switch (pMsg->MsgId)
	{
	case WM_CREATE:
		DistortionCreateItems(pMsg->hWin);
		break;
	case WM_DELETE:
		DistortionDeleteItems();
		break;
	case WM_PAINT:
		GUI_SetBkColor(GUI_BLACK);
		GUI_Clear();
		GUI_SetTextMode(GUI_TEXTMODE_TRANS);
		GUI_DrawBitmap(&bmEMPTYTITLEBAR, 0, 0);
		x = 222;
		y = bmEMPTYTITLEBAR.YSize;
		GUI_DrawBitmap(&bmDISTYPEAREA, x, y);
		GUI_SetFont(&GUI_Font32B_ASCII);
		x = WM_GetWindowSizeX(pMsg->hWin);
		{
			std::string title("Distortion");
			GUI_DispStringHCenterAt(GetTitleWithPreset(title).c_str(), x / 2, 5);
		}
		y += 20;
		GUI_DispStringHCenterAt(strDistype[disIndex], x / 2, y);
		break;
	case WM_NOTIFY_PARENT:
		if(DispatchCommComponent(pMsg,&hCOMPcomm))
		{
			Id = WM_GetId(pMsg->hWinSrc);
			NCode = pMsg->Data.v;
			switch(NCode)
			{
			case WM_NOTIFICATION_CLICKED:
				DEBUG_STDOUT("Distortion button clicked!");
				break;
			case WM_NOTIFICATION_RELEASED:
				switch(Id)
				{
				case DISTORTION_ID_LEFTARROW:
					--disIndex;
					if(0>disIndex)
					{
						disIndex = sizeof(strDistype)/4-1;
					}
					WM_InvalidateRect(pMsg->hWin, &rectDisType);
					DistortionSetType(DistortionGetFX(),disIndex);
					break;
				case DISTORTION_ID_RIGHTARROW:
					++disIndex;
					if(sizeof(strDistype)/4 <= disIndex)
					{
						disIndex = 0;
					}
					WM_InvalidateRect(pMsg->hWin, &rectDisType);
					DistortionSetType(DistortionGetFX(),disIndex);
					break;
				case COMMON_ID_CHECKON:
					DistortionOn(DistortionGetFX(), MisaCheckbox_GetStatus(hCOMPcomm.hCheckOn)?true:false);
					break;
				case COMMON_ID_FX1:
				case COMMON_ID_FX2:
				case COMMON_ID_CLOSE:
					UpdateSynthSettingEx(MISAMODULE_DISTORTION);
					break;
				case CTL_NONE_ID:
				case CTL_TOUCH_X_ID:
				case CTL_TOUCH_Y_ID:
				case CTL_DRAG_X_ID:
				case CTL_DRAG_Y_ID:
				case CTL_BALL_X_ID:
				case CTL_BALL_Y_ID:
				case CTL_VARIATION_ID:
					DistortionControlMenuProc(Id);
					break;
#if 0
				case DISTORTION_ID_PROGDRIVE:
					x = MisaProgressbar_GetPercent(pMsg->hWinSrc);
					DistortionSetDrive(DistortionGetFX(),x<127?x:127);
					break;
				case DISTORTION_ID_PROGTONE:
					x = MisaProgressbar_GetPercent(pMsg->hWinSrc);
					DistortionSetTone(DistortionGetFX(),x<127?x:127);
					break;
				case DISTORTION_ID_PROGLEVEL:
					x = MisaProgressbar_GetPercent(pMsg->hWinSrc);
					DistortionSetLevel(DistortionGetFX(),x<127?x:127);
					break;
#endif
				default:
					;
				}
				DEBUG_STDOUT("Distortion button released!");
				break;
			case WM_NOTIFICATION_VALUE_CHANGED:
				switch(Id)
				{
				case DISTORTION_ID_PROGDRIVE:
					x = MisaProgressbar_GetPercent(pMsg->hWinSrc);
					DistortionSetDrive(DistortionGetFX(),x<127?x:127);
					break;
				case DISTORTION_ID_PROGTONE:
					x = MisaProgressbar_GetPercent(pMsg->hWinSrc);
					DistortionSetTone(DistortionGetFX(),x<127?x:127);
					break;
				case DISTORTION_ID_PROGLEVEL:
					x = MisaProgressbar_GetPercent(pMsg->hWinSrc);
					DistortionSetLevel(DistortionGetFX(),x<127?x:127);
					break;
				case DISTORTION_ID_PROGNOISEREDUCTION:
					x = MisaProgressbar_GetPercent(pMsg->hWinSrc);
					DistortionNoiseReduction(DistortionGetFX(),x);
					break;
				case DISTORTION_ID_PROGBOOSTER:
					x = MisaProgressbar_GetPercent(pMsg->hWinSrc);
					DistortionSetBooster(DistortionGetFX(),x<127?x/32:3);
					break;
				default:
					;
				}
				break;
			case WM_NOTIFICATION_SEL_CHANGED:
				if(hDistortionItems[DISTORTION_PROGNOISEREDUCTION]!=pMsg->hWinSrc && hDistortionItems[DISTORTION_PROGBOOSTER]!=pMsg->hWinSrc)
				{
					std::vector<int> effect;
					x = WM_GetWindowOrgX(pMsg->hWinSrc)+50;
					y = WM_GetWindowOrgY(pMsg->hWinSrc)+340;
					MisaSetcontrolmenu_Popup(pMsg->hWin,pMsg->hWinSrc,x,y);
					effect = SynthFindEffect(SynthTranslateEffect(Id),DistortionGetFX());
					y = effect.size();
					for(x=0;x<y;x++)
					{
						if(-1 != effect[x])
						{
							MisaMenu_SetStatus(AssigneMentMenuTranslate(effect[x]&0x000000FF),2,0,(effect[x]>>8)&0x000000FF);
							MisaMenu_SetStatus(CTL_VARMIN,0,(effect[x]>>16)&0x000000FF,(effect[x]>>8)&0x000000FF);
							MisaMenu_SetStatus(CTL_VARMAX,0,(effect[x]>>24)&0x000000FF,(effect[x]>>8)&0x000000FF);
						}
					}
				}
				break;
			}
コード例 #9
0
ファイル: Modbus_panel.c プロジェクト: Flyagin/BS-MRZV
static void _cbProtection_FrameWin(WM_MESSAGE * pMsg) 
{
  switch (pMsg->MsgId)
  {
  case WM_NOTIFY_PARENT:
    {
      WM_HWIN hObjSrc = pMsg->hWinSrc;
      int Id = WM_GetId(hObjSrc);
      int NCode = pMsg->Data.v;
      
      switch (NCode)
      {
      case WM_NOTIFICATION_GOT_FOCUS:
        {
          if (focus_Modbus_settings != hObjSrc)
          {
            /*
            Визначаємо координати об'єкта, який сфокусований
            */
            WM_SCROLL_STATE ScrollState;
            WM_GetScrollState(ScrollBar_Modbus, &ScrollState);

            int y_hWinSrc = _y_cbPickup_Modbus + WM_GetWindowOrgY(pMsg->hWinSrc);
            int y_hWin    = WM_GetWindowOrgY(pMsg->hWin);
            int y_tmp = y_hWinSrc - y_hWin;
            int v_scroll;
            v_scroll = y_tmp/ScrollState.PageSize;
            v_scroll *= ScrollState.PageSize;
        
            if (_y_cbPickup_Modbus != v_scroll)
            {
              int dy = _y_cbPickup_Modbus - v_scroll;
              for (unsigned int i = 0; i < MAX_NUMBER_ITEMS_MODBUS; i++) 
              {
                WM_MoveWindow(*(Modbus_t + i), 0, dy);
                WM_MoveWindow(*(Modbus_v + i), 0, dy);
              }
              WM_MoveWindow(Modbus_d, 0, dy);
            }
            _y_cbPickup_Modbus = v_scroll;
            focus_Modbus_settings = hObjSrc;
            SCROLLBAR_SetValue(ScrollBar_Modbus, v_scroll);
          }
          break;
        }
      case WM_NOTIFICATION_VALUE_CHANGED:
        {
          if (
              (Id == ID_MODBUS_ADDRESS_VALUE) ||
              (Id == ID_MODBUS_TIMEOUT_VALUE)
             )   
          {
            float value = EDIT_GetFloatValue(hObjSrc);

            int  min = 0, max = 0, value_int;
            unsigned int changer_was_made = false;
            
            switch (Id)
            {
            case ID_MODBUS_ADDRESS_VALUE:
              {
                min = KOEF_ADDRESS_MIN;
                max = KOEF_ADDRESS_MAX;
                value_int = (int)(value);
                if (
                    (current_ekran.edition != 0) &&
                    (edit_settings_1.RS_comm_addres != value_int)
                   )
                {
                  edit_settings_1.RS_comm_addres = value_int;
                  changer_was_made = true;
                }
                break;
              }
            case ID_MODBUS_TIMEOUT_VALUE:
              {
                min = VALUE_TIME_OUT_1_INTERFACE_MIN;
                max = VALUE_TIME_OUT_1_INTERFACE_MAX;
                value_int = (int)(round(value*10.0f));
                if (
                    (current_ekran.edition != 0) &&
                    (edit_settings_1.chTimeOut_RS != value_int)
                   )
                {
                  edit_settings_1.chTimeOut_RS = value_int;
                  changer_was_made = true;
                }
                break;
              }
              default: break;
            }
            
            if (
                (changer_was_made == true) &&
                (current_ekran.edition == 1)
               )    
            {
              //Помічаємо, що дані змінені
              char title[256];
              title[0] = '\0';
              strcat_mal(title, (char *)Modbus_panel_title.ptitle[sel_language]);
              strcat_mal(title, (char *)MODE.ptitle[sel_language]);
              strcat_mal(title, "*");
              FRAMEWIN_SetText(Modbus_FrameWin, title);
              current_ekran.edition = 2;
            }
            
            __info_data info_data;
            EDIT_GetUserData(hObjSrc, &info_data, sizeof(__info_data));
            if ((info_data.extra_param & FLAG_SIGNED_FATA) != 0) value_int = abs(value_int);
            if ((value_int >= min) && (value_int <= max))
            {
              EDIT_SetTextColor(hObjSrc, EDIT_CI_DISABLED, GUI_BLACK);
              EDIT_SetTextColor(hObjSrc, EDIT_CI_ENABLED, GUI_BLACK);
            }
            else
            {
              EDIT_SetTextColor(hObjSrc, EDIT_CI_DISABLED, GUI_RED);
              EDIT_SetTextColor(hObjSrc, EDIT_CI_ENABLED, GUI_RED);
            }
          }
          
          break;
        }
      }

      break;
    }
//  case WM_PAINT:
//    {
//      
//      break;
//    }
  default:
    {
      WM_DefaultProc(pMsg);
      break;
    }
  }
}