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; }
/********************************************************************* * * _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; } }
/********************************************************************* * * _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); } }
/********************************************************************* * * 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(); } }
/********************************************************************* * * _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; }
/********************************************************************* * * WM_GetOrgY */ int WM_GetOrgY(void) { return WM_GetWindowOrgY(GUI_Context.hAWin); }
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; }
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; } } }