/** * @brief Paints of the owner drawn button. * @param hObj: pointer to button handle * @retval None */ static void _OnPaint(BUTTON_Handle hObj) { int Index; GUI_RECT Rect; Index = (WIDGET_GetState(hObj) & BUTTON_STATE_PRESSED) ? 1 : 0; GUI_SetBkColor(FRAMEWIN_GetDefaultClientColor()); GUI_Clear(); WM_GetClientRect(&Rect); /* Draw button background */ if(Index) { GUI_SetColor(0x40000000 | GUI_GRAY); } else { GUI_SetColor(0x40000000 | GUI_DARKGRAY); } GUI_FillRectEx(&Rect); /* Draw black shape */ GUI_SetColor(GUI_DARKGRAY); GUI_DrawRectEx(&Rect); GUI_DrawBitmap(&bmSTLogo40x20, 0, 0); }
/********************************************************************* * * MYWIDGET_Callback */ void MYWIDGET_Callback(WM_MESSAGE * pMsg) { MYWIDGET_Handle hWin; GUI_PID_STATE * pState; MYWIDGET_Obj MyWidget; GUI_RECT WinRect; int ColorIndex; U8 Pressed; hWin = pMsg->hWin; WM_GetWindowRectEx(hWin, &WinRect); GUI_MoveRect(&WinRect, -WinRect.x0, -WinRect.y0); WM_GetUserData(hWin, &MyWidget, sizeof(MYWIDGET_Obj)); switch (pMsg->MsgId) { case WM_PAINT: if (WM_IsEnabled(hWin)) { if (MyWidget.Pressed) { ColorIndex = MYWIDGET_CI_PRESSED; } else { ColorIndex = MYWIDGET_CI_UNPRESSED; } } else { ColorIndex = MYWIDGET_CI_DISABLED; } GUI_SetColor(MyWidget.aBkColor[ColorIndex]); GUI_FillRectEx(&WinRect); if (WM_HasFocus(hWin)) { GUI_SetColor(MyWidget.FocusColor); GUI_DrawRectEx(&WinRect); } GUI_SetColor(MyWidget.aTextColor[ColorIndex]); GUI_SetTextMode(GUI_TM_TRANS); GUI_DispStringInRect(MyWidget.pText, &WinRect, GUI_TA_HCENTER | GUI_TA_VCENTER); break; case WM_TOUCH: pState = (GUI_PID_STATE *)pMsg->Data.p; if (pState) { Pressed = pState->Pressed; } else { Pressed = 0; } if (MyWidget.Pressed != Pressed) { MyWidget.Pressed = Pressed; WM_SetUserData(hWin, &MyWidget, sizeof(MYWIDGET_Obj)); if (Pressed) { WM_SetFocus(hWin); } WM_InvalidateWindow(hWin); } break; case WM_SET_FOCUS: if (pMsg->Data.v) { pMsg->Data.v = 0; } WM_InvalidateWindow(hWin); break; default: WM_DefaultProc(pMsg); } }
/********************************************************************* * * WIDGET_FillRectEx */ void WIDGET__FillRectEx(WIDGET* pWidget, const GUI_RECT* pRect) { if (pWidget->State & WIDGET_STATE_VERTICAL) { GUI_RECT r; _RotateRect90(pWidget, &r, pRect); pRect = &r; } GUI_FillRectEx(pRect); }
/********************************************************************* * * _Paint */ static void _Paint(DROPDOWN_Handle hObj) { int Border; GUI_RECT r; const char* s; int InnerSize, ColorIndex; DROPDOWN_Obj* pObj; int TextBorderSize; /* Do some initial calculations */ pObj = DROPDOWN_H2P(hObj); Border = pObj->Widget.pEffect->EffectSize; TextBorderSize = pObj->Props.TextBorderSize; GUI_SetFont(pObj->Props.pFont); ColorIndex = (pObj->Widget.State & WIDGET_STATE_FOCUS) ? 2 : 1; s = _GetpItem(pObj, pObj->Sel); WM_GetClientRect(&r); GUI__ReduceRect(&r, &r, Border); InnerSize = r.y1 - r.y0 + 1; /* Draw the 3D effect (if configured) */ WIDGET__EFFECT_DrawDown(&pObj->Widget); /* Draw the outer text frames */ r.x1 -= InnerSize; /* Spare square area to the right */ LCD_SetColor(pObj->Props.aBackColor[ColorIndex]); /* Draw the text */ LCD_SetBkColor(pObj->Props.aBackColor[ColorIndex]); GUI_FillRectEx(&r); r.x0 += TextBorderSize; r.x1 -= TextBorderSize; LCD_SetColor (pObj->Props.aTextColor[ColorIndex]); GUI_DispStringInRect(s, &r, pObj->Props.Align);/**/ /* Draw arrow */ WM_GetClientRect(&r); GUI__ReduceRect(&r, &r, Border); r.x0 = r.x1 + 1 - InnerSize; LCD_SetColor(0xc0c0c0); GUI_FillRectEx(&r); LCD_SetColor(GUI_BLACK); _DrawTriangleDown((r.x1 + r.x0) / 2, r.y0 + 5, (r.y1 - r.y0 - 8) / 2); WIDGET__EFFECT_DrawUpRect(&pObj->Widget, &r); }
static void _cbDialog(WM_MESSAGE * pMsg) { WM_MESSAGE myMsg; int val; int sldId; int i; GUI_RECT r; switch(pMsg->MsgId) { case USER_MSG_DIM: HSD_SLIDER_Loop(Slideres[1]); break; case USER_MSG_MNT_SWT: break; case USER_MSG_SKIN: pSkin = &(SysWinSkins[pMsg->Data.v]); WINDOW_SetBkColor(pMsg->hWin, pSkin->bkColor); for(i=SLD_NUM; i;) { i--; HSD_SLIDER_SetBkColor(Slideres[i], pSkin->sldBk); HSD_SLIDER_SetFocusBkColor (Slideres[i], pSkin->sldBk); HSD_SLIDER_SetSlotColor(Slideres[i], pSkin->sldSlot); HSD_SLIDER_SetFocusSlotColor(Slideres[i], pSkin->sldSlot); HSD_SLIDER_SetSliderColor(Slideres[i], pSkin->sldSlider); HSD_SLIDER_SetFocusSliderColor(Slideres[i], pSkin->sldFocusSlider); } break; case WM_INIT_DIALOG: agentConf.Brt = SysConf.Brt; agentConf.Shape = SysConf.Shape; agentConf.Skin = SysConf.Skin; agentConf.Unit = SysConf.Unit; agentConf.Vol = SysConf.Vol; pSkin = &(SysWinSkins[SysConf.Skin]); Slideres[0] = WM_GetDialogItem(pMsg->hWin, ID_SLIDER_SKIN); WM_SetCallback(Slideres[0], &sldListener); HSD_SLIDER_SetRange(Slideres[0], SKIN_Day, SKIN_Night); HSD_SLIDER_SetValue(Slideres[0], SysConf.Skin); Slideres[1] = WM_GetDialogItem(pMsg->hWin, ID_SLIDER_BRT); WM_SetCallback(Slideres[1], &sldListener); HSD_SLIDER_SetNumTicks(Slideres[1], 6); HSD_SLIDER_SetRange(Slideres[1], 1, 6); HSD_SLIDER_SetValue(Slideres[1], SysConf.Brt); Slideres[2] = WM_GetDialogItem(pMsg->hWin, ID_SLIDER_VOL); WM_SetCallback(Slideres[2], &sldListener); HSD_SLIDER_SetNumTicks(Slideres[2], 6); HSD_SLIDER_SetRange(Slideres[2], 1, 6); HSD_SLIDER_SetValue(Slideres[2], SysConf.Vol); Slideres[3] = WM_GetDialogItem(pMsg->hWin, ID_SLIDER_UNIT); WM_SetCallback(Slideres[3], &sldListener); HSD_SLIDER_SetRange(Slideres[3], UNIT_nm, UNIT_km); HSD_SLIDER_SetValue(Slideres[3], SysConf.Unit); Slideres[4] = WM_GetDialogItem(pMsg->hWin, ID_SLIDER_SHAPE); WM_SetCallback(Slideres[4], &sldListener); HSD_SLIDER_SetRange(Slideres[4], SHAPE_Boat, SHAPE_Fish); HSD_SLIDER_SetValue(Slideres[4], SysConf.Shape); Slideres[5] = WM_GetDialogItem(pMsg->hWin, ID_SLIDER_REVIVE); WM_SetCallback(Slideres[5], &sldReviveCallback); HSD_SLIDER_SetRange(Slideres[5], 0, 4); HSD_SLIDER_SetValue(Slideres[5], 0); // // hBtRevive = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_REVIVE); // BUTTON_SetText(hBtRevive, "确定"); // BUTTON_SetTextColor(hBtRevive, BUTTON_CI_PRESSED, GUI_BLACK); // BUTTON_SetBkColor(hBtRevive, BUTTON_BI_UNPRESSED, pSkin->sldSlider); // WM_SetCallback(hBtRevive, &myButtonListener); WINDOW_SetBkColor(pMsg->hWin, pSkin->bkColor); for(i=SLD_NUM; i; ) { i--; HSD_SLIDER_SetBkColor(Slideres[i], pSkin->sldBk); HSD_SLIDER_SetFocusBkColor (Slideres[i], pSkin->sldBk); HSD_SLIDER_SetSlotColor(Slideres[i], pSkin->sldSlot); HSD_SLIDER_SetFocusSlotColor(Slideres[i], pSkin->sldSlot); HSD_SLIDER_SetSliderColor(Slideres[i], pSkin->sldSlider); HSD_SLIDER_SetFocusSliderColor(Slideres[i], pSkin->sldFocusSlider); } break; case USER_MSG_REPLY: if(pMsg->Data.v == REPLY_OK) { if(agentConf.Skin != SysConf.Skin) { myMsg.MsgId = USER_MSG_SKIN; myMsg.Data.v = agentConf.Skin; WM_BroadcastMessage(&myMsg); } if(agentConf.Shape != SysConf.Shape) { myMsg.hWin = mapWin; myMsg.MsgId = USER_MSG_SHAPE; myMsg.Data.v = agentConf.Shape; WM_SendMessage(myMsg.hWin, &myMsg); } memcpy(&SysConf, &agentConf, sizeof(SysConf)); sysStore(); } else { /// Roll back HSD_SLIDER_SetValue(Slideres[0], SysConf.Skin); HSD_SLIDER_SetValue(Slideres[1], SysConf.Brt); HSD_SLIDER_SetValue(Slideres[2], SysConf.Vol); HSD_SLIDER_SetValue(Slideres[3], SysConf.Unit); HSD_SLIDER_SetValue(Slideres[4], SysConf.Shape); } WM_SetFocus(Slideres[0]); WM_SetFocus(menuWin); break; case WM_NOTIFY_PARENT: switch(pMsg->Data.v) { case WM_NOTIFICATION_VALUE_CHANGED: sldId = WM_GetId(pMsg->hWinSrc) - ID_SLIDER_SKIN; if(sldId >=0 && sldId < SLD_NUM-1) { val = HSD_SLIDER_GetValue(Slideres[sldId]); ProcChanging[sldId](pMsg, val); } break; } break; case WM_PAINT:{ GUI_POINT aEnlargePoints[11]; WM_GetClientRectEx(pMsg->hWin, &r); GUI_SetColor(pSkin->bkColor); GUI_FillRectEx(&r); GUI_SetColor(pSkin->ClientbkColor); r.x0 = r.x0 + 10; r.x1 = r.x1 - 10; r.y0 = r.y0 + 40; r.y1 = r.y1 - 40; GUI_FillRectEx(&r); GUI_SetFont(&GUI_Font30); GUI_SetTextMode(GUI_TEXTMODE_TRANS); GUI_SetColor(pSkin->txColor); GUI_DispStringAt("夜间模式:", 30, Win_SysSet_txOrg ); GUI_DispStringAt("亮度设置:", 30, Win_SysSet_txOrg+(Win_SysSet_Text_HEIGHT+Win_SysSet_txGrap)); GUI_DispStringAt("音量设置:", 30, Win_SysSet_txOrg+(Win_SysSet_Text_HEIGHT+Win_SysSet_txGrap)*2); GUI_DispStringAt("单位设置:", 30, Win_SysSet_txOrg+(Win_SysSet_Text_HEIGHT+Win_SysSet_txGrap)*3); GUI_DispStringAt("船位设置:", 30, Win_SysSet_txOrg+(Win_SysSet_Text_HEIGHT+Win_SysSet_txGrap)*4); GUI_DispStringAt("关闭", 130,Win_SysSet_txOrg); GUI_DispStringAt("开启", 310,Win_SysSet_txOrg); GUI_DispStringAt("恢复出厂设置", 30, Win_SysSet_txOrg + (Win_SysSet_Text_HEIGHT+Win_SysSet_txGrap)*5); GUI_DispStringAt("系统版本:",30, Win_SysSet_txOrg + (Win_SysSet_Text_HEIGHT+Win_SysSet_txGrap)*6); GUI_DispStringAt(VERSION, 180,Win_SysSet_txOrg + (Win_SysSet_Text_HEIGHT+Win_SysSet_txGrap)*6); // sprintf(pStrBuf, "%s", __TIME__); // GUI_DispStringAt(pStrBuf,400,Win_SysSet_txOrg + (Win_SysSet_Text_HEIGHT+Win_SysSet_txGrap)*5); // sprintf(pStrBuf, "%s", __DATE__); // GUI_DispStringAt(pStrBuf,400,Win_SysSet_txOrg + (Win_SysSet_Text_HEIGHT+Win_SysSet_txGrap)*6); GUI_SetFont (&GUI_Font32_1); GUI_DispStringAt("nm", 140,Win_SysSet_txOrg+(Win_SysSet_Text_HEIGHT+Win_SysSet_txGrap)*3); GUI_DispStringAt("km", 310,Win_SysSet_txOrg+(Win_SysSet_Text_HEIGHT+Win_SysSet_txGrap)*3); GUI_RotatePolygon(aEnlargePoints, Points_fish, 11, -1.57); GUI_DrawPolygon(aEnlargePoints, 11, 330, Win_SysSet_txOrg+(Win_SysSet_Text_HEIGHT+Win_SysSet_txGrap)*4+18 ); GUI_DrawPolygon(Points_boat, 3, 160, Win_SysSet_txOrg+(Win_SysSet_Text_HEIGHT+Win_SysSet_txGrap)*4+18); GUI_SetFont(&GUI_Font24); GUI_DispStringAt("使用",30, Win_SysSet_txOrg+(Win_SysSet_Text_HEIGHT+Win_SysSet_txGrap)*7+10); GUI_DispStringAt("选择选项及调整音量亮度数字",118, Win_SysSet_txOrg+(Win_SysSet_Text_HEIGHT+Win_SysSet_txGrap)*7+10); GUI_SetColor(pSkin->sldSlider); GUI_DispStringAt("左右", 78, Win_SysSet_txOrg+(Win_SysSet_Text_HEIGHT+Win_SysSet_txGrap)*7+10); }break; default: WM_DefaultProc(pMsg); break; } }
/********************************************************** * _Paint * */ static void _Paint(SLIDER_Obj* pObj, WM_HWIN hObj) { GUI_RECT r, rFocus, rSlider, rSlot; GUI_COLOR SlotColor, SliderColor; int x0, xSize, Range, NumTicks,hasFocus; WIDGET__GetClientRect(&pObj->Widget, &rFocus); GUI__ReduceRect(&r, &rFocus, 1); NumTicks = pObj->NumTicks; xSize = r.x1 - r.x0 + 1 - pObj->Width; x0 = r.x0 + pObj->Width / 2; Range = pObj->Max - pObj->Min; if(Range == 0) { Range = 1; } if(pObj->Widget.State & WIDGET_STATE_FOCUS) { LCD_SetColor(pObj->aBkColor[1]); SlotColor = pObj->aColor[1]; SliderColor = pObj->aColor[3]; hasFocus = 1; } else { LCD_SetColor(pObj->aBkColor[0]); SlotColor = pObj->aColor[0]; SliderColor = pObj->aColor[2]; hasFocus = 0; } GUI_Clear(); GUI_FillRectEx(&rFocus); rSlider = r; rSlider.y0 = 5; rSlider.x0 = x0 + (U32)xSize * (U32)(pObj->v - pObj->Min) / Range - pObj->Width / 2; rSlider.x1 = rSlider.x0 + pObj->Width; LCD_SetColor(SlotColor); rSlot.x0 = x0; rSlot.x1 = x0 + xSize; rSlot.y0 = (rSlider.y0 + rSlider.y1) / 2 - 1; rSlot.y1 = rSlot.y0 + 3; GUI_FillRectEx(&rSlot); if(hasFocus) { LCD_SetColor(GUI_WHITE); GUI_DrawRect(rSlot.x0-1, rSlot.y0-1, rSlot.x1+1,rSlot.y1+1); } LCD_SetColor(SliderColor); GUI_FillCircle(rSlider.x0+pObj->Width/2,(rSlider.y0+rSlider.y1)/2 , pObj->Width/2); if(NumTicks > 0) { LCD_SetColor(GUI_BLACK); GUI_SetFont(GUI_FONT_16B_1); GUI_SetTextMode(GUI_TM_TRANS); GUI_DispDecAt(pObj->v, rSlider.x0+pObj->Width/2-3,(rSlider.y0+rSlider.y1)/2-8, 1); } }
/********************************************************************* * * _cbDialog */ static void _cbDialog(WM_MESSAGE * pMsg) { WM_HWIN hItem; int SelectedRow = -1; long SelectedMMSI = 0; int i; switch (pMsg->MsgId) { case USER_MSG_LV_UPDATE: updateListViewContent(WM_GetDialogItem(pMsg->hWin, ID_LISTVIEW_0)); break; case USER_MSG_SKIN: pSkin = &(lvWinSkins[pMsg->Data.v]); INFO("case skin:%s",pMsg->Data.v==SKIN_Day?"Day":"Night"); WINDOW_SetBkColor(pMsg->hWin,pSkin->bkColor); hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_0); TEXT_SetTextColor(hItem, pSkin->ttl_Text); hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_1); TEXT_SetTextColor(hItem, pSkin->ttl_Text); hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_2); TEXT_SetTextColor(hItem, pSkin->inf_Label); hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_3); TEXT_SetTextColor(hItem, pSkin->inf_Label); hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_4); TEXT_SetTextColor(hItem, pSkin->inf_Label); hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_5); TEXT_SetTextColor(hItem, pSkin->inf_Label); hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_6); TEXT_SetTextColor(hItem, pSkin->inf_Label); hItem = WM_GetDialogItem(pMsg->hWin, ID_LISTVIEW_0); LISTVIEW_SetBkColor(hItem, LISTVIEW_CI_UNSEL, pSkin->itm_bkUnsel); LISTVIEW_SetBkColor(hItem, LISTVIEW_CI_SEL, pSkin->itm_bkSel); LISTVIEW_SetBkColor(hItem, LISTVIEW_CI_SELFOCUS, pSkin->itm_bkFocus); LISTVIEW_SetTextColor(hItem,LISTVIEW_CI_UNSEL, pSkin->itm_txUnsel); LISTVIEW_SetTextColor(hItem,LISTVIEW_CI_SEL, pSkin->itm_txSel); LISTVIEW_SetTextColor(hItem,LISTVIEW_CI_SELFOCUS, pSkin->itm_txFocus); hItem = LISTVIEW_GetHeader(hItem); HEADER_SetBkColor(hItem,pSkin->Header_Bk); HEADER_SetTextColor(hItem,pSkin->Header_Text); break; case WM_INIT_DIALOG: pSkin = &(lvWinSkins[SysConf.Skin]); hItem = pMsg->hWin; WINDOW_SetBkColor(hItem, pSkin->bkColor); hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_0); TEXT_SetTextColor(hItem, pSkin->ttl_Text); hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_1); TEXT_SetTextColor(hItem, pSkin->ttl_Text); hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_2); TEXT_SetTextColor(hItem, pSkin->inf_Label); hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_3); TEXT_SetTextColor(hItem, pSkin->inf_Label); hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_4); TEXT_SetTextColor(hItem, pSkin->inf_Label); hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_5); TEXT_SetTextColor(hItem, pSkin->inf_Label); hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_6); TEXT_SetTextColor(hItem, pSkin->inf_Label); hItem = WM_GetDialogItem(pMsg->hWin, ID_LISTVIEW_0); WM_SetCallback(hItem, &myListViewListener); LISTVIEW_AddColumn(hItem, LV_AllList_Col_0_WIDTH, "距离", GUI_TA_HCENTER | GUI_TA_VCENTER); LISTVIEW_AddColumn(hItem, LV_AllList_Col_2_WIDTH, "MMSI", GUI_TA_HCENTER | GUI_TA_VCENTER); LISTVIEW_AddColumn(hItem, LV_AllList_Col_3_WIDTH, "状态", GUI_TA_HCENTER | GUI_TA_VCENTER); LISTVIEW_AddRow(hItem, NULL); LISTVIEW_SetGridVis(hItem, 1); LISTVIEW_SetHeaderHeight(hItem,LV_MoniteList_Header_HEIGHT); LISTVIEW_SetRowHeight(hItem,LV_MoniteList_Row_HEIGHT); LISTVIEW_SetFont(hItem,&GUI_Font30); LISTVIEW_SetBkColor(hItem, LISTVIEW_CI_UNSEL, pSkin->itm_bkUnsel); LISTVIEW_SetBkColor(hItem, LISTVIEW_CI_SEL, pSkin->itm_bkSel); LISTVIEW_SetBkColor(hItem, LISTVIEW_CI_SELFOCUS, pSkin->itm_bkFocus); LISTVIEW_SetTextColor(hItem,LISTVIEW_CI_UNSEL, pSkin->itm_txUnsel); LISTVIEW_SetTextColor(hItem,LISTVIEW_CI_SEL, pSkin->itm_txSel); LISTVIEW_SetTextColor(hItem,LISTVIEW_CI_SELFOCUS, pSkin->itm_txFocus); for(i=LV_PAGE_SIZE; i>0; i--) { LISTVIEW_AddRow(hItem, NULL); } LISTVIEW_SetSel(hItem, 0); hItem = LISTVIEW_GetHeader(hItem); HEADER_SetBkColor(hItem,pSkin->Header_Bk); HEADER_SetTextColor(hItem,pSkin->Header_Text); isSub2Inited = 1; break; case WM_PAINT: GUI_SetColor(pSkin->inf_bkColor); GUI_FillRectEx(&infoRect); GUI_SetTextMode(GUI_TM_TRANS); GUI_SetFont(&GUI_Font24); GUI_SetColor(pSkin->inf_Label); GUI_DispStringAt("按确定键选择或取消选择监控的网位仪", LV_AllList_WIDTH+20, LV_AllList_Y+240); GUI_SetFont(&GUI_Font24_1); GUI_SetColor(pSkin->inf_txColor); hItem = WM_GetDialogItem(pMsg->hWin, ID_LISTVIEW_0); if(WM_HasFocus(hItem) == FALSE) { sprintf(pStrBuf, " 0/%3d", N_boat); GUI_DispStringAt(pStrBuf,LV_AllList_WIDTH-80,LV_AllList_Y-20); break; } // if( N_boat <= 0 ){ // sprintf(pStrBuf, " 0/ 0"); // GUI_DispStringAt(pStrBuf, LV_AllList_WIDTH-80, LV_AllList_Y-20); // break; // } SelectedRow = LISTVIEW_GetSel(hItem); LISTVIEW_GetItemText(WM_GetDialogItem(pMsg->hWin, ID_LISTVIEW_0), LV_AllList_Col_MMSI, SelectedRow, pStrBuf, 11); SelectedMMSI = strtoi(pStrBuf); if(SelectedMMSI <= 0) { sprintf(pStrBuf," 0/%3d", N_boat); GUI_DispStringAt(pStrBuf,LV_AllList_WIDTH-80,LV_AllList_Y-20); break; } for(i=0; i<N_boat ; i++) { if(SimpBerthes[i].pBerth->Boat.user_id == SelectedMMSI) { break; } } if(i<N_boat) { sprintf(pStrBuf,"%3d/%3d", i+1 ,N_boat); GUI_DispStringAt(pStrBuf,LV_AllList_WIDTH-80,LV_AllList_Y-20); GUI_DispStringAt(SimpBerthes[i].pBerth->Boat.name,LV_AllList_WIDTH+80,85); lltostr(SimpBerthes[i].latitude,pStrBuf); GUI_DispStringAt(pStrBuf,LV_AllList_WIDTH+80,125); lltostr(SimpBerthes[i].longitude,pStrBuf); GUI_DispStringAt(pStrBuf,LV_AllList_WIDTH+80,165); // if(SysConf.Unit == UNIT_km) // { // int sog = SimpBerthes[i].pBerth->Boat.SOG *18; // sprintf(pStrBuf, "%3d.%02dkm",sog/100, sog%100); // } // else // { // sprintf(pStrBuf, "%2d.%dkt", SimpBerthes[i].pBerth->Boat.SOG/10, // SimpBerthes[i].pBerth->Boat.SOG%10); // } sprintf(pStrBuf, "%2d.%dkt", SimpBerthes[i].pBerth->Boat.SOG/10, SimpBerthes[i].pBerth->Boat.SOG%10); GUI_DispStringAt(pStrBuf, LV_AllList_WIDTH+80,205); sprintf(pStrBuf, "%3d", SimpBerthes[i].pBerth->Boat.COG/10); pStrBuf[3] = 194; pStrBuf[4] = 176; pStrBuf[5] = '\0'; GUI_DispStringAt(pStrBuf,LV_AllList_WIDTH+80,245); } break; default: WM_DefaultProc(pMsg); break; } }