minigui自定义控件。IP 时间日期

来源:互联网 发布:360免费送windows 10 编辑:程序博客网 时间:2024/05/18 01:51
留念下。
///////////////////////////////////////////////////IP 跟时间日期控件 由于3.0输入法原因,改版;
//////////////////////////////////////////////////////////////////////////////
///////////////////define IPControl
/////////////////////////////////////////////////////////////////////////////
//static int iAddr1,iAddr2,iAddr3,iAddr4;
//static int iCursor = 0;
//static WNDPROC old_spinbox_proc;
//static RECT rect;
//static RECT rcIP1,rcIP2,rcIP3,rcIP4;
//
///////计算鼠标点击在那个区域
//static int ParseClickRect(int x,int y)
//{
// if(x > rcIP1.left && x < rcIP1.right)
// {
//  iCursor = 1;
// }
// else if(x > rcIP2.left && x < rcIP2.right)
// {
//  iCursor = 2;
// }
// else if(x > rcIP3.left && x < rcIP3.right)
// {
//  iCursor = 3;
// }
// else if(x > rcIP4.left && x < rcIP4.right)
// {
//  iCursor = 4;
// }
// return iCursor;
//}
//static int DrawIPAdress(HDC hdc,HWND hwnd)
//{
//  char buf[20];
//  if(iCursor == 0 )
//   {
//    
//    sprintf(buf,"%3d.%3d.%3d.%3d",iAddr1,iAddr2,iAddr3,iAddr4);
//    SetBkColor(hdc,RGB2Pixel(hdc,51,43,204));
//    TextOut(hdc,20,10,buf);
//   }
//  else if(iCursor == 1)
//   {
//    sprintf(buf,"%3d",iAddr1);
//    SetBkColor(hdc,RGB2Pixel(hdc,106,116,216));
//    TextOut(hdc,20,10,buf);
//    int x = strlen(buf)*(GetSysCharWidth()+GetTextCharacterExtra(hdc)) + 20 ;
//    SetCaretPos(hwnd,x,10);
//    sprintf(buf,".%3d.%3d.%3d",iAddr2,iAddr3,iAddr4);
//    SetBkColor(hdc,RGB2Pixel(hdc,51,43,204));
//    TextOut(hdc,x,10,buf);
//    }
//  else if(iCursor == 2)
//   {
//    sprintf(buf,"%3d.",iAddr1);
//    SetBkColor(hdc,RGB2Pixel(hdc,51,43,204));
//    TextOut(hdc,20,10,buf);
//    
//    int x = strlen(buf)*(GetSysCharWidth()+GetTextCharacterExtra(hdc)) + 20;
//    sprintf(buf,"%3d",iAddr2);
//    SetBkColor(hdc,RGB2Pixel(hdc,106,116,216));
//    TextOut(hdc,x,10,buf);
//    x += strlen(buf)*(GetSysCharWidth() + GetTextCharacterExtra(hdc));
//    SetCaretPos(hwnd,x,10);
//    
//    sprintf(buf,".%3d.%3d",iAddr3,iAddr4);
//    SetBkColor(hdc,RGB2Pixel(hdc,51,43,204));
//    TextOut(hdc,x,10,buf);
//    }
//  else if(iCursor == 3)
//   {
//    sprintf(buf,"%3d.%3d.",iAddr1,iAddr2);
//    SetBkColor(hdc,RGB2Pixel(hdc,51,43,204));
//    TextOut(hdc,20,10,buf);
//       
//    int x = strlen(buf)*(GetSysCharWidth()+GetTextCharacterExtra(hdc)) + 20;
//    sprintf(buf,"%3d",iAddr3);
//    SetBkColor(hdc,RGB2Pixel(hdc,106,116,216));
//    TextOut(hdc,x,10,buf);
//    x += strlen(buf)*(GetSysCharWidth()+GetTextCharacterExtra(hdc));
//    SetCaretPos(hwnd,x,10);
//    sprintf(buf,".%3d",iAddr4);
//    SetBkColor(hdc,RGB2Pixel(hdc,51,43,204));
//    TextOut(hdc,x,10,buf);
//    
//    }
//  else
//   {
//    sprintf(buf,"%3d.%3d.%3d.",iAddr1,iAddr2,iAddr3);
//    SetBkColor(hdc,RGB2Pixel(hdc,51,43,204));
//    TextOut(hdc,20,10,buf);
//    int x = strlen(buf)*(GetSysCharWidth()+GetTextCharacterExtra(hdc)) + 20 ;
//    sprintf(buf,"%3d",iAddr4);
//    SetBkColor(hdc,RGB2Pixel(hdc,106,116,216));
//    TextOut(hdc,x,10,buf);
//    x += strlen(buf)*(GetSysCharWidth()+GetTextCharacterExtra(hdc));
//    SetCaretPos(hwnd,x,10);
//    }
//  ShowCaret(hwnd);
//}
//
//static int BackSpaceValue(int num)
//{
// if(num > 1000)
//  {
//   int x = num/1000;
//   int y = (num - x*1000)/100;
//   int z = (num - x*1000 - y*100)/10;
//   return x*100+y*10+z;
//  }
// else if(num > 100)
//  {
//   int x = num/100;
//   int y = (num - x*100)/10;
//   return  x*10+y;
//  }
// else if(num >10)
//  {
//   int x = num/10;
//   return x; 
//  }
// else
//  {
//   return 0;
//   }
//    
// }
//
//static int IPSpinboxControlProc(HWND hwnd,int message,WPARAM wParam,LPARAM lParam)
//{
// RECT rect;
// GetClientRect(hwnd,&rect);
// switch(message)
// {
//  case MSG_CREATE:
//   {
//    break;
//    }
//  case  MSG_PAINT:
//   {
//    HDC hdc = BeginPaint(hwnd);
//    SetBkMode(hdc,BM_TRANSPARENT);
//    SelectFont(hdc,logFont);
//    SetBrushColor(hdc,RGB2Pixel(hdc,51,43,204));
//    FillBox(hdc,rect.left,rect.top,rect.right,rect.bottom);
//    ///////////////////////////取出窗口的数据///////////
//    IPDATA *ipdata = (IPDATA*)GetWindowAdditionalData(hwnd);
//    iAddr1 = ipdata->iAddr1;
//    iAddr2 = ipdata->iAddr2;
//    iAddr3 = ipdata->iAddr3;
//    iAddr4 = ipdata->iAddr4;
//    iCursor = ipdata->iCursor;
//    char buf[20];
//    sprintf(buf,"%d.%d.%d.%d",iAddr1,iAddr2,iAddr3,iAddr4);
//    TextOut(hdc,0,0,buf);
//    DrawIPAdress(hdc,hwnd);
//    EndPaint(hwnd,hdc);
//    break;
//    }
//  case CB_SPIN:
//   {
//    IPDATA *ipdata = (IPDATA*)GetWindowAdditionalData(hwnd);
//    if(iCursor <= 1)
//     {
//      if(wParam == 0)
//        {
//          if(iAddr1 >= 255) iAddr1 = -1;
//          ++iAddr1;
//        }
//       else
//        {
//         if(iAddr1 <= 0) iAddr1 = 256;
//          --iAddr1;
//         }
//     }
//    else if(iCursor == 2)
//     {
//      if(wParam == 0)
//        {
//          if(iAddr2 >= 255) iAddr2 = -1;
//          ++iAddr2;
//        }
//       else
//        {
//         if(iAddr2 <= 0) iAddr2 = 256;
//          --iAddr2;
//         }
//     }
//    else if(iCursor == 3)
//     {
//      if(wParam == 0)
//        {
//          if(iAddr3 >= 255) iAddr3 = -1;
//          ++iAddr3;
//        }
//       else
//        {
//         if(iAddr3 <= 0) iAddr3 = 256;
//          --iAddr3;
//         }
//     }
//    else if(iCursor ==4)
//     {
//      if(wParam == 0)
//        {
//          if(iAddr4 >= 255) iAddr4 = -1;
//          ++iAddr4;
//        }
//       else
//        {
//         if(iAddr4 <= 0) iAddr4 = 256;
//          --iAddr4;
//         }
//     }
//     ipdata->iAddr1 = iAddr1;
//     ipdata->iAddr2 = iAddr2;
//     ipdata->iAddr3 = iAddr3;
//     ipdata->iAddr4 = iAddr4;
//     SetWindowAdditionalData(hwnd,(DWORD)ipdata);
//     SendMessage(hwnd,MSG_PAINT,wParam,lParam);
//    return 0;
//    }
//  case MSG_KEYDOWN:
//   {
//    if(wParam == SCANCODE_BACKSPACE)
//     {
//     switch(iCursor)
//      {
//       case 0:
//       case 1:
//        {
//         iAddr1 = BackSpaceValue(iAddr1);
//         break;
//         }
//       case 2:
//        {
//         iAddr2 = BackSpaceValue(iAddr2);
//         break;
//         }
//       case 3:
//        {
//         iAddr3 = BackSpaceValue(iAddr3);
//         break;
//         }
//       case 4:
//        {
//         iAddr4 = BackSpaceValue(iAddr4);
//         break;
//        }  
//      } 
//     }
//     IPDATA *ipdata = (IPDATA*)GetWindowAdditionalData(hwnd);
//     ipdata->iAddr1 = iAddr1;
//     ipdata->iAddr2 = iAddr2;
//     ipdata->iAddr3 = iAddr3;
//     ipdata->iAddr4 = iAddr4;
//     SetWindowAdditionalData(hwnd,(DWORD)ipdata);
//     SendMessage(hwnd,MSG_PAINT,wParam,lParam);
//    return 0;
//    }
//  case MSG_CHAR:
//   {
//    if((wParam >= 'A' && wParam <= 'Z' && wParam) || (wParam >= 'a' && wParam <= 'z')) return 0;
//    else if(wParam >= '0' && wParam <= '9')
//     {
//      switch(iCursor)
//      {
//       case 0:
//       case 1:
//        {
//         if(iAddr1 >100)
//          {
//           return 0;
//           }
//         if((iAddr1 = iAddr1*10+(int)wParam - 48) > 255)
//           iAddr1 = 255;
//         break;
//         }
//       case 2:
//        {
//         if(iAddr2 >100)
//          {
//           return 0;
//           }
//         if((iAddr2 = iAddr2*10+(int)wParam - 48) > 255)
//           iAddr2 = 255;
//         break;
//         }
//       case 3:
//        {
//         if(iAddr3 >100)
//          {
//           return 0;
//           }
//         if((iAddr3 = iAddr3*10+(int)wParam - 48) > 255)
//           iAddr3 = 255;
//         break;
//         }
//       case 4:
//        {
//         if(iAddr4 >100)
//          {
//           return 0;
//           }
//         if((iAddr4 = iAddr4*10+(int)wParam - 48) > 255)
//           iAddr4 = 255;
//         break;
//        }  
//       }
//       IPDATA *ipdata = (IPDATA*)GetWindowAdditionalData(hwnd);
//       ipdata->iAddr1 = iAddr1;
//       ipdata->iAddr2 = iAddr2;
//       ipdata->iAddr3 = iAddr3;
//       ipdata->iAddr4 = iAddr4;
//       SetWindowAdditionalData(hwnd,(DWORD)ipdata);
//      }
//    SendMessage(hwnd,MSG_PAINT,wParam,lParam);
//    return 0;
//    }
//  case MSG_LBUTTONDOWN:
//   {
//    int pos_x,pos_y;
//    pos_x = LOWORD(lParam);
//    pos_y = HIWORD(lParam);
//    IPDATA *ipData = (IPDATA*)GetWindowAdditionalData(hwnd);
//    ipData->iCursor = ParseClickRect(pos_x,pos_y);
//    SetWindowAdditionalData(hwnd,(DWORD)ipData);
//    CreateCaret(hwnd,NULL,1,GetSysCharHeight());
//    SendMessage(hwnd,MSG_PAINT,wParam,lParam);
//    SendMessage(hwnd,MSG_SETFOCUS,ipData->iCursor,0);
//    break;
//   }
//  case MSG_MOUSEMOVEIN:
//   {
//    HideCaret(hwnd);
//    DestroyCaret(hwnd);
//    IPDATA *ipData = (IPDATA*)GetWindowAdditionalData(hwnd);
//    ipData->iCursor = iCursor = 0;
//    SetWindowAdditionalData(hwnd,(DWORD)ipData);
//    SendMessage(hwnd,MSG_PAINT,wParam,lParam);
//    break;
//   }
//  ///////////输入法
//   case MSG_INPUTINFO:
//    {
//      char buf[60];
//      strcpy(buf,(const char*)lParam); 
//      int i = atoi(buf);
//      if(i > 255) 
//       {
//        SendMessage(hwnd,MSG_SETFOCUS,wParam,0);
//        break;
//       }
//      SendMessage(hwnd,ISB_SETIPVALUE,wParam,i);
//      HWND edit_wnd,list_wnd;
//      SendMessage(hwnd,CB_GETCHILDREN,(WPARAM)&edit_wnd,(LPARAM)&list_wnd);
//      SendMessage(edit_wnd,EM_SETCARETPOS,0,sizeof(buf));
//      break;
//    }
//   case MSG_SETFOCUS:
//    { 
//      char buf[60];
//      int iValue = SendMessage(hwnd,ISB_GETIPVALUE,wParam,0);
//      sprintf(buf,"%d",iValue);
//      RECT rectC,rectP,rectPP;
//      if(GetParent(hwnd) != GetActiveWindow()) 
//       {
//        GetWindowRect(hwnd,&rectC);
//        GetWindowRect(GetParent(hwnd),&rectP);
//        GetWindowRect(GetParent(GetParent(hwnd)),&rectPP);
//        rectC.left += rectP.left + rectPP.left;
//        rectC.top += rectP.top + rectPP.top;
//        rectC.right += rectP.left + rectPP.left;
//        rectC.bottom += rectP.top + rectPP.top;
//       }
//      ShowInputWindow(input_hwnd,0,rectC.left,rectC.bottom,rectC.right-rectC.left,rectC.bottom-rectC.top,hwnd,buf,wParam);
//      break;
//    }
//  case ISB_SETIPVALUE:
//   {
//     IPDATA *ipdata = (IPDATA*)GetWindowAdditionalData(hwnd);
//     if(wParam == 1) ipdata->iAddr1 = lParam;
//     else if(wParam == 2 ) ipdata->iAddr2 = lParam;
//     else if(wParam == 3 ) ipdata->iAddr3 = lParam;
//     else if(wParam == 4 ) ipdata->iAddr4 = lParam;
//     SetWindowAdditionalData(hwnd,(DWORD)ipdata);
//     SendMessage(hwnd,MSG_PAINT,wParam,lParam);
//     break; 
//   }
//  case ISB_GETIPVALUE:
//   {  
//     int iValue = 0;
//     IPDATA *ipdata = (IPDATA*)GetWindowAdditionalData(hwnd);
//     if(wParam == 1) iValue = ipdata->iAddr1;
//     else if(wParam == 2 ) iValue = ipdata->iAddr2;
//     else if(wParam == 3 ) iValue = ipdata->iAddr3;
//     else if(wParam == 4 ) iValue = ipdata->iAddr4;
//     return iValue;
//    break; 
//   }
//  case MSG_DESTROY:
//   {
//    IPDATA *ipdata = (IPDATA*)GetWindowAdditionalData(hwnd);
//    free(ipdata);
////    DestroyLogFont(logFont);
//    }
// }
// return (*old_spinbox_proc)(hwnd,message,wParam,lParam);
// 
//}
//
//HWND CreateIPSpinBoxWindow(const char* spCation,int id,int x,int y,int w,int h,HWND hParentWnd,DWORD dwAddData,HWND inputWnd)
//{
// input_hwnd = inputWnd;
// IPDATA *ipdata;
// ipdata = (IPDATA*)malloc(sizeof(IPDATA));
// ipdata->iAddr1 =  ipdata->iAddr2 = ipdata->iAddr3 = ipdata->iAddr4 = 255;
// ipdata->iCursor = 0;
// HWND hwnd = CreateWindow(CTRL_COMBOBOX,spCation,WS_VISIBLE | WS_CHILD | CBS_AUTOSPIN | CBS_AUTOLOOP,id,x,y,w,h,hParentWnd,dwAddData);
// SetWindowAdditionalData(hwnd,(DWORD)ipdata);
// HDC hdc;
// HWND hwnd_edit,hwnd_list;
// SendMessage(hwnd,CB_GETCHILDREN,(WPARAM)&hwnd_edit,(LPARAM)&hwnd_list);
// EnableWindow(hwnd_edit,false);
// hdc = GetClientDC(hwnd_edit);
// GetClientRect(hwnd_edit,&rect);
// rcIP1.top = rcIP2.top = rcIP3.top = rcIP4.top = rect.top;
// rcIP1.bottom = rcIP2.bottom = rcIP3.bottom = rcIP4.bottom = rect.bottom;
// rcIP1.left = rect.left;
// rcIP1.right = rect.right/4;
// rcIP2.left = rect.right/4;
// rcIP2.right = rect.right/2;
// rcIP3.left = rect.right/2;
// rcIP3.right = rect.right - rect.right/3;
// rcIP4.left = rect.right - rect.right/3;
// rcIP4.right = rect.right;
// SetWindowBkColor(hwnd_edit,RGB2Pixel(hdc,51,43,204));
// old_spinbox_proc = SetWindowCallbackProc(hwnd,IPSpinboxControlProc);
// ReleaseDC(hdc);
// return hwnd;
//}
//
//////////////////////////////////////////////////////////
/////////////////////define my DateTimeControl ///////////
//////////////////////////////////////////////////////////////
/////////////////////2012/9/14 17:39:31/////////////////
////////////////////////////////////////////////////////////////
//static const char* ctrlStyle;
//static WNDPROC old_datetime_proc;
//static int year,month,day,hour,minute,second;
//
//static int ParseDTimeClickRect(int x,int y)
//{
// if(x > rcIP1.left && x < rcIP1.right)
// {
//  iCursor = 1;
// }
// else if(x > rcIP2.left && x < rcIP2.right)
// {
//  iCursor = 2;
// }
// else if(x > rcIP3.left && x < rcIP3.right)
// {
//  iCursor = 3;
// }
// return iCursor;
//}
//static void DrawTimeText(HWND hwnd, HDC hdc)
//{
// char buf[10];
// int iHeight = GetSysCharHeight();
// int y =  (rcIP1.bottom - rcIP1.top - iHeight)/2;
// SetTextCharacterExtra(hdc,2);
// SIZE size;
// int x;
// if(strcmp(ctrlStyle,"TimeControl") == 0)
// {
//  GetTextExtent(hdc,"00:00:00",-1,&size);
//  x = (rcIP3.right - size.cx)/2;
//  if(iCursor == 0 )
//  {
//   sprintf(buf,"%02d:%02d:%02d",hour,minute,second);
//   SetBkColor(hdc,RGB2Pixel(hdc,51,43,204));
//   TextOut(hdc,x,y,buf);
//  }
//  else if(iCursor == 1)
//  {
//   sprintf(buf,"%02d",hour);
//   SetBkColor(hdc,RGB2Pixel(hdc,106,116,216));
//   TextOut(hdc,x,y,buf);
//   x += strlen(buf)*(GetSysCharWidth()+GetTextCharacterExtra(hdc));
//   SetCaretPos(hwnd,x,10);
//   sprintf(buf,":%02d:%02d",minute,second);
//   SetBkColor(hdc,RGB2Pixel(hdc,51,43,204));
//   TextOut(hdc,x,y,buf);
//  }
//  else if(iCursor == 2)
//  {
//   sprintf(buf,"%02d:",hour);
//   SetBkColor(hdc,RGB2Pixel(hdc,51,43,204));
//   TextOut(hdc,x,y,buf);
//
//   x += strlen(buf)*(GetSysCharWidth()+GetTextCharacterExtra(hdc));
//   sprintf(buf,"%02d",minute);
//   SetBkColor(hdc,RGB2Pixel(hdc,106,116,216));
//   TextOut(hdc,x,y,buf);
//   x += strlen(buf)*(GetSysCharWidth() + GetTextCharacterExtra(hdc));
//   SetCaretPos(hwnd,x,10);
//
//   sprintf(buf,":%02d",second);
//   SetBkColor(hdc,RGB2Pixel(hdc,51,43,204));
//   TextOut(hdc,x,y,buf);
//  }
//  else if(iCursor == 3)
//  {
//   sprintf(buf,"%02d:%02d:",hour,minute);
//   SetBkColor(hdc,RGB2Pixel(hdc,51,43,204));
//   TextOut(hdc,x,y,buf);
//
//   x += strlen(buf)*(GetSysCharWidth()+GetTextCharacterExtra(hdc));
//   sprintf(buf,"%02d",second);
//   SetBkColor(hdc,RGB2Pixel(hdc,106,116,216));
//   TextOut(hdc,x,y,buf);
//   x += strlen(buf)*(GetSysCharWidth()+GetTextCharacterExtra(hdc));
//   SetCaretPos(hwnd,x,y);
//  }
// }
// else
// {
//  GetTextExtent(hdc,"0000:00:00",-1,&size);
//  x = (rcIP3.right - size.cx)/2;
//  if(iCursor == 0 )
//  {
//
//   sprintf(buf,"%4d-%02d-%02d",year,month,day);
//   SetBkColor(hdc,RGB2Pixel(hdc,51,43,204));
//   TextOut(hdc,x,y,buf);
//  }
//  else if(iCursor == 1)
//  {
//   sprintf(buf,"%4d",year);
//   SetBkColor(hdc,RGB2Pixel(hdc,106,116,216));
//   TextOut(hdc,x,y,buf);
//   x += strlen(buf)*(GetSysCharWidth()+GetTextCharacterExtra(hdc)) ;
//   SetCaretPos(hwnd,x,10);
//   sprintf(buf,"-%02d-%02d",month,day);
//   SetBkColor(hdc,RGB2Pixel(hdc,51,43,204));
//   TextOut(hdc,x,y,buf);
//  }
//  else if(iCursor == 2)
//  {
//   sprintf(buf,"%4d-",year);
//   SetBkColor(hdc,RGB2Pixel(hdc,51,43,204));
//   TextOut(hdc,x,y,buf);
//
//   x += strlen(buf)*(GetSysCharWidth()+GetTextCharacterExtra(hdc));
//   sprintf(buf,"%02d",month);
//   SetBkColor(hdc,RGB2Pixel(hdc,106,116,216));
//   TextOut(hdc,x,y,buf);
//   x+= strlen(buf)*(GetSysCharWidth() + GetTextCharacterExtra(hdc));
//   SetCaretPos(hwnd,x,10);
//
//   sprintf(buf,"-%02d",day);
//   SetBkColor(hdc,RGB2Pixel(hdc,51,43,204));
//   TextOut(hdc,x,y,buf);
//  }
//  else if(iCursor == 3)
//  {
//   sprintf(buf,"%4d-%02d-",year,month);
//   SetBkColor(hdc,RGB2Pixel(hdc,51,43,204));
//   TextOut(hdc,x,y,buf);
//
//   x += strlen(buf)*(GetSysCharWidth()+GetTextCharacterExtra(hdc));
//   sprintf(buf,"%02d",day);
//   SetBkColor(hdc,RGB2Pixel(hdc,106,116,216));
//   TextOut(hdc,x,y,buf);
//   x += strlen(buf)*(GetSysCharWidth()+GetTextCharacterExtra(hdc));
//   SetCaretPos(hwnd,x,y);
//  }
// }
//}
//////////////////////
//static bool bInputShow = false;
//static int DateTimeControlProc (HWND hwnd, int message, WPARAM wParam, LPARAM lParam)
//{
//  switch(message)
//  {
//  case MSG_PAINT:
//    {
//     HDC hdc = BeginPaint(hwnd);
//     RECT rectTmp;
//     GetClientRect(hwnd,&rectTmp);
//     SetBrushColor(hdc,RGB2Pixel(hdc,51,43,204));
//     FillBox(hdc,rectTmp.left,rectTmp.top,rectTmp.right,rectTmp.bottom);
//     SetWindowBkColor(hwnd,RGB2Pixel(hdc,51,43,204));
//     ///////////////////////////取出窗口的数据///////////
//     DATETIMEDATA *data = (DATETIMEDATA*)GetWindowAdditionalData(hwnd);
//     rcIP1 = data->rc1;
//     rcIP2 = data->rc2;
//     rcIP3 = data->rc3;
//     year = data->year;
//     month =data->month;
//     day = data->day;
//     hour = data->hour;
//     minute = data->minute;
//     second = data->second;
//     iCursor = data->iCursor;
//     ctrlStyle = data->style;
//     
//     DrawTimeText(hwnd,hdc);
//     EndPaint(hwnd,hdc);
//     break;
//    }
//    case MSG_KEYDOWN:
//      {
//        switch (wParam) {
//    case SCANCODE_BACKSPACE:
//     {
//      switch(iCursor)
//      {
//       case 0:
//       case 1:
//        {
//         if (strcmp(ctrlStyle,CLASS_DATETIME_DATE) == 0)
//         {
//          year = BackSpaceValue(year);
//         }
//         else
//         {
//          hour = BackSpaceValue(hour);
//         }
//         break;
//        }
//       case 2:
//        {
//         if (strcmp(ctrlStyle,CLASS_DATETIME_DATE) == 0)
//         {
//          month = BackSpaceValue(month);
//         }
//         else
//         {
//          minute = BackSpaceValue(minute);
//         }
//         break;
//        }
//       case 3:
//        {
//         if (strcmp(ctrlStyle,CLASS_DATETIME_DATE) == 0)
//         {
//          day = BackSpaceValue(day);
//         }
//         else
//         {
//          second = BackSpaceValue(second);
//         }
//         break;
//        }
//      } 
//      DATETIMEDATA *data = (DATETIMEDATA*)GetWindowAdditionalData(hwnd);
//      data->year = year;
//      data->month = month;
//      data->day = day;
//      data->hour = hour;
//      data->minute = minute;
//      data->second = second;
//      SetWindowAdditionalData(hwnd,(DWORD)data);
//      SendMessage(hwnd,MSG_PAINT,wParam,lParam);
//      return 0;
//     }
//    case SCANCODE_CURSORBLOCKUP:
//     {
//      switch(iCursor)
//      {
//      case 0:
//      case 1:
//       {
//        if (strcmp(ctrlStyle,CLASS_DATETIME_DATE) == 0)
//        {
//         ++year;
//         if (year > 2500)
//         {
//          year = 1800;
//         }
//        }
//        else
//        {
//         ++hour;
//         if (hour > 23)
//         {
//          hour = 0;
//         }
//        }
//        break;
//       }
//      case 2:
//       {
//        if (strcmp(ctrlStyle,CLASS_DATETIME_DATE) == 0)
//        {
//         ++month;
//         if (month > 12)
//         {
//          month =1;
//         }
//        }
//        else
//        {
//         ++minute;
//         if (minute > 59)
//         {
//          minute = 0;
//         }
//        }
//        break;
//       }
//      case 3:
//       {
//        if (strcmp(ctrlStyle,CLASS_DATETIME_DATE) == 0)
//        {
//         ++day;
//         if (day > 31)
//         {
//          day = 1;
//         }
//        }
//        else
//        {
//         ++second;
//         if (second > 59)
//         {
//          second = 0;
//         }
//        }
//        break;
//       }
//      } 
//      DATETIMEDATA *data = (DATETIMEDATA*)GetWindowAdditionalData(hwnd);
//      data->year = year;
//      data->month = month;
//      data->day = day;
//      data->hour = hour;
//      data->minute = minute;
//      data->second = second;
//      SetWindowAdditionalData(hwnd,(DWORD)data);
//      SendMessage(hwnd,MSG_PAINT,wParam,lParam);
//      return 0;
//     }
//    case SCANCODE_CURSORBLOCKDOWN:
//     {
//      switch(iCursor)
//      {
//      case 0:
//      case 1:
//       {
//        if (strcmp(ctrlStyle,CLASS_DATETIME_DATE) == 0)
//        {
//         --year;
//         if (year < 0)
//         {
//          year = 2500;
//         }
//        }
//        else
//        {
//         --hour;
//         if (hour < 0)
//         {
//          hour = 23;
//         }
//        }
//        break;
//       }
//      case 2:
//       {
//        if (strcmp(ctrlStyle,CLASS_DATETIME_DATE) == 0)
//        {
//         --month;
//         if (month < 1)
//         {
//          month = 12;
//         }
//        }
//        else
//        {
//         --minute;
//         if (minute < 0)
//         {
//          minute = 59;
//         }
//        }
//        break;
//       }
//      case 3:
//       {
//        if (strcmp(ctrlStyle,CLASS_DATETIME_DATE) == 0)
//        {
//         --day;
//         if (day < 0)
//         {
//          day = 31;
//         }
//        }
//        else
//        {
//         --second;
//         if (second < 0)
//         {
//          second = 59;
//         }
//        }
//        break;
//       }
//      } 
//      DATETIMEDATA *data = (DATETIMEDATA*)GetWindowAdditionalData(hwnd);
//      data->year = year;
//      data->month = month;
//      data->day = day;
//      data->hour = hour;
//      data->minute = minute;
//      data->second = second;
//      SetWindowAdditionalData(hwnd,(DWORD)data);
//      SendMessage(hwnd,MSG_PAINT,wParam,lParam);
//      return 0;
//     }
//     }
//    }
//   case MSG_CHAR:
//     {
//       if((wParam >= 'A' && wParam <= 'Z' && wParam) || (wParam >= 'a' && wParam <= 'z')) return 0;
//     else if(wParam >= '0' && wParam <= '9')
//      {
//       switch(iCursor)
//       {
//       case 0:
//       case 1:
//        {
//         if (strcmp(ctrlStyle,CLASS_DATETIME_DATE) == 0)
//         {
//          if(year > 999)
//          {
//           return 0;
//          }
//          if((year = year*10+(int)wParam - 48) > 2500)
//           year = 2500;
//         }
//         else
//         {
//          if (hour > 19)
//          {
//           return 0;
//          }
//          if (hour = hour*10+(int)wParam - 48 > 23)
//          {
//           hour = 23;
//          }
//         }
//         break;
//        }
//       case 2:
//        {
//         if (strcmp(ctrlStyle,CLASS_DATETIME_DATE) == 0)
//         {
//          if(month >9)
//          {
//           return 0;
//          }
//          if((month = month*10+(int)wParam - 48) > 12)
//           month = 12;
//         }
//         else
//         {
//          if (minute > 9)
//          {
//           return 0;
//          }
//          if (minute = minute*10+(int)wParam - 48 > 59)
//          {
//           minute = 59;
//          }
//         }
//         break;
//        }
//       case 3:
//        {
//         if (strcmp(ctrlStyle,CLASS_DATETIME_DATE) == 0)
//         {
//          if(day > 9)
//          {
//           return 0;
//          }
//          if((day = day*10+(int)wParam - 48) > 31)
//           day = 31;
//         }
//         else
//         {
//          if (second > 9)
//          {
//           return 0;
//          }
//          if (second = second*10+(int)wParam - 48 > 59)
//          {
//           second = 59;
//          }
//         }
//         break;
//        }
//      }
//      DATETIMEDATA *data = (DATETIMEDATA*)GetWindowAdditionalData(hwnd);
//      data->year = year;
//      data->month = month;
//      data->day = day;
//      data->hour = hour;
//      data->minute = minute;
//      data->second = second;
//      SetWindowAdditionalData(hwnd,(DWORD)data);
//      SendMessage(hwnd,MSG_PAINT,wParam,lParam);
//        return 0; 
//       }
//   }
//  ///////////输入法
//   case MSG_INPUTINFO:
//   {
//     char buf[60];
//     strcpy(buf,(const char*)lParam);
//     int i  = 0;
//     if(strlen(buf) == 0) i = 0;
//     else i = atoi(buf);
//     DATETIMEDATA *data = (DATETIMEDATA*)GetWindowAdditionalData(hwnd);
//     int iMonth = data->month;
//     if(strcmp(ctrlStyle,CLASS_DATETIME_DATE) == 0)
//      {
//        if((wParam == 1 && i > 2500 ) || (wParam == 2 && i > 12) || (wParam == 3 && ((month == 1 || month ==3 || month ==5 || month ==7 ||month ==8 || month ==10 || month ==12) && i > 31) || ((month ==2 || month ==4 || month ==6 || month ==9 || month ==11) && i > 30))) 
//         {
//          SendMessage(hwnd,MSG_SETFOCUS,wParam,0);
//          break;
//         }
//      }
//     else
//      {
//        if((wParam == 1 && i > 23) || (wParam == 2 && i > 59) || (wParam == 3 && i > 59))
//         {
//          SendMessage(hwnd,MSG_SETFOCUS,wParam,0);
//          break;
//         } 
//      }
//     SendMessage(hwnd,ISB_SETIPVALUE,wParam,i);
//     break;
//   }
//  case ISB_SETIPVALUE:
//   {
//     DATETIMEDATA *data = (DATETIMEDATA*)GetWindowAdditionalData(hwnd);
//     if(strcmp(data->style,CLASS_DATETIME_DATE) == 0)
//      {
//        if(wParam == 1) data->year = lParam;
//        else if(wParam == 2) data->month = lParam;
//        else if(wParam == 3) data->day = lParam;
//      }
//     else
//      {
//        if(wParam == 1) data->hour = lParam;
//        else if(wParam == 2) data->minute = lParam;
//        else if(wParam == 3)data->second = lParam;
//      }
//     SetWindowAdditionalData(hwnd,(DWORD)data);
//     SendMessage(hwnd,MSG_PAINT,wParam,lParam);
//     SendMessage(hwnd,MSG_SETFOCUS,wParam,0);
//     break; 
//   }
//  case ISB_GETIPVALUE:
//   {  
//     int iValue = 0;
//     DATETIMEDATA *data = (DATETIMEDATA*)GetWindowAdditionalData(hwnd);
//     if(strcmp(data->style,CLASS_DATETIME_DATE) == 0)
//      {
//       
//        if(wParam == 1) iValue = data->year;
//        else if(wParam == 2) iValue = data->month;
//        else if(wParam == 3) iValue = data->day;
//      }
//     else
//      {
//        if(wParam == 1) iValue = data->hour;
//        else if(wParam == 2) iValue = data->minute;
//        else if(wParam == 3) iValue = data->second;
//      }
//     return iValue;
//    break; 
//   }
//  case MSG_SETFOCUS:
//   {
//    
//    char buf[60];
//    int iValue = SendMessage(hwnd,ISB_GETIPVALUE,wParam,0);
//    sprintf(buf,"%d",iValue);
//    RECT rectC,rectP,rectPP;
//    if(GetParent(hwnd) != GetActiveWindow()) 
//    {
//     GetWindowRect(hwnd,&rectC);
//     GetWindowRect(GetParent(hwnd),&rectP);
//     GetWindowRect(GetParent(GetParent(hwnd)),&rectPP);
//     rectC.left += rectP.left + rectPP.left;
//     rectC.top += rectP.top + rectPP.top;
//     rectC.right += rectP.left + rectPP.left;
//     rectC.bottom += rectP.top + rectPP.top;
//    }
//    ShowInputWindow(input_hwnd,0,rectC.left,rectC.bottom,rectC.right-rectC.left,rectC.bottom-rectC.top,hwnd,buf,wParam);
//    bInputShow = true;
//    break;
//   }
//  case MSG_LBUTTONDOWN:
//   {
//    int pos_x,pos_y;
//    pos_x = LOWORD(lParam);
//    pos_y = HIWORD(lParam);
//    DATETIMEDATA *data = (DATETIMEDATA*)GetWindowAdditionalData(hwnd);
//    data->iCursor = ParseDTimeClickRect(pos_x,pos_y);
//    SendMessage(hwnd,MSG_SETFOCUS,data->iCursor,0);
//    SetWindowAdditionalData(hwnd,(DWORD)data);
//    CreateCaret(hwnd,NULL,1,GetSysCharHeight());
//    SendMessage(hwnd,MSG_PAINT,wParam,lParam);
//    break;
//   }
//  case MSG_NCLBUTTONDOWN:
//   {
//    int x,y;
//    x = LOWORD(lParam);
//    y = HIWORD(lParam);
//    HideCaret(hwnd);
//    DestroyCaret(hwnd);
//    DATETIMEDATA *data = (DATETIMEDATA*)GetWindowAdditionalData(hwnd);
//    data->iCursor = iCursor = 0;
//    SetWindowAdditionalData(hwnd,(DWORD)data);
//    SendMessage(hwnd,MSG_PAINT,wParam,lParam);
//    break;
//   }
//  case MSG_DESTROY:
//   {
//    DATETIMEDATA *data = (DATETIMEDATA*)GetWindowAdditionalData(hwnd);
//    free(data);   
//    break;
//   }
//  case MSG_CLOSE:
//   {
////    DestroyLogFont(logFont);
//   }
//  }
//    return (*old_datetime_proc) (hwnd, message, wParam, lParam);
//}
//
///////////创建日期时间控件。 就是一个编辑框与旋钮控件组合。  父窗口要给出,在子对话框用到了。
//HWND CreateDateTimeWindow(const char* sStyle,int id,int x,int y,int w,int h,HWND hParentWnd,DWORD dwAddData,HWND inputWnd)
//{
// input_hwnd = inputWnd;
// HWND hwnd,spin;
// RECT rect;
// ctrlStyle = sStyle;       
//  hwnd = CreateWindow(CTRL_SLEDIT,"",WS_VISIBLE | WS_CHILD,id,x,y,w-10,h,hParentWnd,dwAddData);
//  SetWindowFont(hwnd,logFont);
// GetClientRect(hwnd,&rect);
//
// rcIP1.top= rcIP2.top = rcIP3.top = rect.top;
// rcIP1.bottom = rcIP2.bottom = rcIP3.bottom = rect.bottom;
// rcIP1.left = rect.left;
// if (strcmp(sStyle,CLASS_DATETIME_DATE) == 0)
// {
//  rcIP1.right = rect.right/2;
//  rcIP2.left = rect.right/2;
//  rcIP2.right = rect.right*3/4;
//  rcIP3.left = rect.right*3/4;
//  rcIP3.right = rect.right;
// }else
// {
//  rcIP1.right = rect.right/3;
//  rcIP2.left = rect.right/3;
//  rcIP2.right = rect.right*2/3;
//  rcIP3.left = rect.right*2/3;
//  rcIP3.right = rect.right;
// }
// DATETIMEDATA *timeData = (DATETIMEDATA*)malloc(sizeof(DATETIMEDATA));
// time_t curTime;
// curTime = time(NULL);
// struct tm *tt = localtime(&curTime);
// timeData->year = tt->tm_year+1900;
// timeData->month = tt->tm_mon + 1;
// timeData->day = tt->tm_mday;
// timeData->hour = tt->tm_hour;
// timeData->minute = tt->tm_min;
// timeData->second = tt->tm_sec;
// timeData->iCursor = iCursor = 0;
// strcpy(timeData->style,const_cast<char*>(sStyle));
// timeData->SetRC(rcIP1,rcIP2,rcIP3);
// SetWindowAdditionalData(hwnd,(DWORD)timeData);
// old_datetime_proc = SetWindowCallbackProc (hwnd, DateTimeControlProc);
// spin = CreateWindow (CTRL_SPINBOX,
//                        "",
//                        WS_CHILD | WS_VISIBLE,
//                        IDC_SPINBOX,
//                        x+w-10, y+(rect.bottom - 20)/2 , 0, 0, hParentWnd, 0);
// SendMessage (spin, SPM_SETTARGET, 0, hwnd);
// return hwnd;
//}
0 0
原创粉丝点击