Ejemplo n.º 1
0
/**
  * @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);
    }
}
Ejemplo n.º 3
0
/*********************************************************************
*
*       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);
}
Ejemplo n.º 4
0
/*********************************************************************
*
*       _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);
}
Ejemplo n.º 5
0
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;
   }
}
Ejemplo n.º 6
0
 /**********************************************************
  *                 _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);
   }
}
Ejemplo n.º 7
0
/*********************************************************************
*
*       _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;
  }
}