⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 kokoutlook.c

📁 M3355的源代码
💻 C
📖 第 1 页 / 共 2 页
字号:
	  DrawBaseBmp(hdc, &lEdgebmp);
   	}

   //draw up edge 
   if(upBmpId>0) 
   {
	  uEdgebmp.BmpID=upBmpId;
	  uEdgebmp.width=474;//GetBMPWidth(HBITMAP hbmp);
	  uEdgebmp.height=2;
	  uEdgebmp.upperleftx=lpRc->left;
	  uEdgebmp.upperlefty=lpRc->top;
	  DrawBaseBmp(hdc, &uEdgebmp);
   	}

	   //draw right edge 
   if(rightBmpId>0) 
   {
	  rEdgebmp.BmpID=rightBmpId;
	  rEdgebmp.width=2;//GetBMPWidth(HBITMAP hbmp);
	  rEdgebmp.height=38;
	  rEdgebmp.upperleftx=lpRc->right-2;
	  rEdgebmp.upperlefty=lpRc->top+2;
	   DrawBaseBmp(hdc, &rEdgebmp);
   	}

	   //draw down edge 
	 if(downBmpId>0) 
     {
	  dEdgebmp.BmpID=downBmpId;
	  dEdgebmp.width=474;//GetBMPWidth(HBITMAP hbmp);
	  dEdgebmp.height=2;
	  dEdgebmp.upperleftx=lpRc->left;
	  dEdgebmp.upperlefty=lpRc->bottom-2;
	  DrawBaseBmp(hdc, &dEdgebmp);
	 } 
}

void DrawKokBack(HDC hdc,BYTE bInit)
{
  RECT bsRect;
  //draw box rect.
  if(bInit)
  {
    SetRect(&bsRect, KOK_LEFT,KOK_TOP, KOK_LEFT+KOK_OUTLOOK_WIDTH-1,KOK_TOP+KOK_OUTLOOK_HIGH-1);
    GUI_CreateButtonControl2(gui_hdc, &bsRect, GetColorInDef256Palette(253), GetColorInDef256Palette(87), GetColorInDef256Palette(199), CL_BKNOCARE, "", NORMAL_STRING, 0, 0);
  }
  else
  {
    SetRect(&bsRect, KOK_LEFT+156,KOK_TOP+2, KOK_LEFT+KOK_OUTLOOK_WIDTH-5,KOK_TOP+KOK_OUTLOOK_HIGH-5);
    GUI_CreateButtonControl2(gui_hdc, &bsRect, GetColorInDef256Palette(253), GetColorInDef256Palette(253), GetColorInDef256Palette(253), CL_BKNOCARE, "", NORMAL_STRING, 0, 0);
  }
}

void drawKokBox(HDC hdc,lpKokBox lpKokbox)
{
  HDC hMemDC;
  HBITMAP holdbmp;
  RECT bsRect,tempRect;
  BYTE i,curItem;
  int left,right,top,bottom;
  UINT uFormat=DT_SINGLELINE|DT_VCENTER|DT_CENTER|DT_CHARCLIP;
  BYTE keystr[4][4]=
  	{
  	  	{'\0','b','\0','\0'},
  	  	{'\0','#','\0','\0'},
  	};
  HBRUSH hbr;
  
  curItem=lpKokbox->curItem;
  
  hMemDC=InitMemoryDC(hdc,lpKokbox->kokIconBmp[curItem].width+1,lpKokbox->kokIconBmp[curItem].height+1,&holdbmp);
 //draw kok icon bmp
  SetRect(&tempRect, 0, 0,lpKokbox->kokIconBmp[curItem].width,lpKokbox->kokIconBmp[curItem].height);
  GUI_CreateBitmapControl2(hMemDC, &tempRect, GetColorInDef256Palette(253), GetColorInDef256Palette(253), GetColorInDef256Palette(253), lpKokbox->kokIconBmp[curItem].BmpID, 0, 0);
  BitBlt(hdc, lpKokbox->kokIconBmp[curItem].upperleftx, lpKokbox->kokIconBmp[curItem].upperlefty, lpKokbox->kokIconBmp[curItem].width, lpKokbox->kokIconBmp[curItem].height, hMemDC, 1, 0, SRCCOPY);
  DelMemoryDC(hMemDC, holdbmp);  

  left=lpKokbox->kokItemRec.rect.left;
  right=lpKokbox->kokItemRec.rect.right;
  top=lpKokbox->kokItemRec.rect.top;
  bottom=lpKokbox->kokItemRec.rect.bottom;

  hMemDC=InitMemoryDC(hdc,right-left+1,bottom-top+1,&holdbmp);
 //draw item rect 
 lpKokbox->kokItemRec.rect.right-=left;
 lpKokbox->kokItemRec.rect.bottom-=top;
 lpKokbox->kokItemRec.rect.left=0;
 lpKokbox->kokItemRec.rect.top=0;
   DrawBaseRect(hMemDC,&(lpKokbox->kokItemRec)); 
 
 //draw item string
 lpKokbox->kokItemName[curItem].rect.left-=left;
 lpKokbox->kokItemName[curItem].rect.right-=left;
 lpKokbox->kokItemName[curItem].rect.bottom-=top;
 lpKokbox->kokItemName[curItem].rect.top-=top;
   DrawBaseStr(hMemDC,&(lpKokbox->kokItemName[curItem]));
 
  BitBlt(hdc, left, top, right-left, bottom-top, hMemDC, 1, 0, SRCCOPY);
  DelMemoryDC(hMemDC, holdbmp);  

 //draw EKRect where are both echo and key bar .have left/right arrow at both sides.
   drawEKBarRect(hdc,&(lpKokbox->EKBarRec),lpKokbox->backgroudClr,lpKokbox->arrClrIndex);

 //draw string ahead of echo/key bar
  if(curItem==KOK_STAGE_ECHO||curItem==KOK_STAGE_KEY)
  {
   left=lpKokbox->barStr[curItem-1].rect.left;
   right=lpKokbox->barStr[curItem-1].rect.right;
   top=lpKokbox->barStr[curItem-1].rect.top;
   bottom=lpKokbox->barStr[curItem-1].rect.bottom;

   hMemDC=InitMemoryDC(hdc,right-left+1,bottom-top+1,&holdbmp);

   SetRect(&tempRect,0,0,right-left,bottom-top);
   GUI_CreateButtonControl2(hMemDC,&tempRect,GetColorInDef256Palette(253),GetColorInDef256Palette(253),GetColorInDef256Palette(253),GetColorInDef256Palette(253),"",0,0,0);
   lpKokbox->barStr[curItem-1].rect.left=0;
   lpKokbox->barStr[curItem-1].rect.right-=left;
   lpKokbox->barStr[curItem-1].rect.top=0;
   lpKokbox->barStr[curItem-1].rect.bottom-=top;
   DrawBaseStr(hMemDC,&(lpKokbox->barStr[curItem-1]));	//gushun for karaoke volume
   
   BitBlt(hdc, left, top, right-left, bottom-top, hMemDC, 1, 0, SRCCOPY);
   DelMemoryDC(hMemDC, holdbmp);  
  }

 //draw echo bar bmp
 if(curItem==KOK_STAGE_ECHO)
 {
   left=lpKokbox->EKBarRec.left;
   right=lpKokbox->EKBarRec.right;
   top=lpKokbox->EKBarRec.top;
   bottom=lpKokbox->EKBarRec.bottom;

   hMemDC=InitMemoryDC(hdc,right-left+1,bottom-top+1,&holdbmp);

   SetRect(&tempRect,0,0,right-left,bottom-top);
   GUI_CreateButtonControl2(hMemDC,&tempRect,GetColorInDef256Palette(253),GetColorInDef256Palette(253),GetColorInDef256Palette(253),GetColorInDef256Palette(253),"",0,0,0);
   lpKokbox->EchoBarBmp.upperleftx=4;
   lpKokbox->EchoBarBmp.upperlefty=12;
   nmDrawBar(hMemDC,&(lpKokbox->EchoBarBmp),0,lpKokbox->kokValue,0);
   
   BitBlt(hdc, left, top, right-left, bottom-top, hMemDC, 1, 0, SRCCOPY);
   DelMemoryDC(hMemDC, holdbmp);  
 }

 //draw key bar bmp
 if(curItem==KOK_STAGE_KEY)
 {
  SetRect(&bsRect, lpKokbox->EKBarRec.left+2, lpKokbox->EKBarRec.top,
  	     lpKokbox->EKBarRec.left+12 , lpKokbox->EKBarRec.bottom);
  SetTextColor(hdc, GetColorInDef256Palette(239));
  DrawText(hdc,keystr[0], -1, &bsRect,uFormat);

  SetRect(&bsRect, lpKokbox->EKBarRec.right-12, lpKokbox->EKBarRec.top,
  	     lpKokbox->EKBarRec.right , lpKokbox->EKBarRec.bottom);
  SetTextColor(hdc, GetColorInDef256Palette(239));
  DrawText(hdc,keystr[1], -1, &bsRect,uFormat);

  nmDrawBar(hdc,&(lpKokbox->KeyBarBmp[1]),0,lpKokbox->kokValue+1,4);
  nmDrawBar(hdc,&(lpKokbox->KeyBarBmp[0]),lpKokbox->kokValue+1,13,4);
 } 
 //-->gushun for karaoke volume
  if(curItem == KOK_STAGE_VOLUME)	
 {
  nmDrawBar(hdc,&(lpKokbox->KeyBarBmp[1]),0,lpKokbox->kokValue,4);
  nmDrawBar(hdc,&(lpKokbox->KeyBarBmp[0]),lpKokbox->kokValue,15,4);
 }
  //<--gushun for karaoke volume

 //draw mellody/voice value string
 if(curItem==KOK_STAGE_MELODY||curItem==KOK_STAGE_VOICE)
 {
   //-->Alan, bug fix: in karaoke menu of dvd, the strings will overlap
   // when adjusting melody or voice 
   hbr = CreateSolidBrush(GetColorInDef256Palette(253));
   FillRect(hdc, &(lpKokbox->MVStr.rect), hbr);
   DeleteObject((HGDIOBJ)hbr);

   DrawBaseStr(hdc,&(lpKokbox->MVStr));
 } 
}

void ShowKaraOkeBarORI(HDC hdc,int cmd)
{
  BOOL bInit;
  
  switch(cmd)
  {
     case CMD_OSDINIT:
         bInit=TRUE;
	     break;
	 case CMD_UP:
         bInit=TRUE;
	 	 break;
	 case CMD_DOWN:
         bInit=TRUE;
	 	 break;
	 case CMD_LEFT:
         bInit=FALSE;
	 	 break;
	 case CMD_RIGHT:
         bInit=FALSE;
	     break;
  }
  drawKokBoxWithMemDc(hdc,&kokbox,bInit);
}
//end new>>
//===========================

//---------------------
BYTE tempv;
BYTE tempMelody ;
void ShowVolumOnBotBlk(BYTE VolType)
{
    int i;
    int value;       

    switch(VolType)
    {
    case KOK_STAGE_VOLUME:	//gushun for karaoke volume
        value = OSD_Setup_Parameter.bMasterVolume;
        break;
    case KOK_STAGE_ECHO:
        value = OSD_Setup_Parameter.bKaraEcho;
        break;
    case KOK_STAGE_KEY:
        value = OSD_Setup_Parameter.bKaraKey;
        break;
    case KOK_STAGE_VOICE:
        //value = OSD_Setup_Parameter.bKaraVoiceVol;
        value = tempv;
        break;
    case KOK_STAGE_MELODY:
        //value = OSD_Setup_Parameter.c;
        //Haiyuan Say: I dont know which parameter it is now.temp set 1
        value =tempMelody;
        break;
    }

    // if (g_UiCrntFunc==UI_FUNC_FILEOPEN||bMixPlay)
    //	ShowKaraOkeBar(gui_hdc,VolType,value,KOK_LEFT+ (720-608)/2,KOK_TOP+ (480-416)/2, CMD_OSDINIT);
    //else
    	ShowKaraOkeBar(gui_hdc,VolType,value,KOK_LEFT,KOK_TOP, CMD_OSDINIT);
        
    SetTimer(OSD3_TM_ID, KaraokeTimer,TIME_10SEC);
}

void ModifyVolum(BYTE bAction)
{
    extern BOOL isKaraoke,haveMelody;
    extern BYTE isMultiVoise;

    BYTE bVolum[MAXKOKITEMS];		//gushun for karaoke volume

    BYTE MaxVol[MAXKOKITEMS] = {15,10,12,3,1};	//gushun for karaoke volume
    int PointX,PointY;

    bVolum[KOK_STAGE_ECHO] = OSD_Setup_Parameter.bKaraEcho;
    bVolum[KOK_STAGE_KEY] = OSD_Setup_Parameter.bKaraKey;
    bVolum[KOK_STAGE_VOICE] = tempv;
    bVolum[KOK_STAGE_MELODY] = tempMelody;
    bVolum[KOK_STAGE_VOLUME] = OSD_Setup_Parameter.bMasterVolume;	//gushun for karaoke volume
    //if (g_UiCrntFunc==UI_FUNC_FILEOPEN||bMixPlay)
    //{
    //	PointX = KOK_LEFT+ (720-608)/2;
    //   PointY = KOK_TOP+ (480-416)/2;
    //}
    //else
    {
    	PointX = KOK_LEFT;
       PointY = KOK_TOP;
    }
    switch(bAction)
    {
    case V_KEY_LEFT:
        if(bVolum[bVolCounter]>0)
        {
            bVolum[bVolCounter]--;
            ShowKaraOkeBar(gui_hdc,bVolCounter,bVolum[bVolCounter],PointX,PointY,CMD_LEFT);
        }
        else if(bVolCounter >2)//melody and voise need recycle	//gushun for karaoke volume
        {
            bVolum[bVolCounter] = MaxVol[bVolCounter];
            ShowKaraOkeBar(gui_hdc,bVolCounter,bVolum[bVolCounter],PointX,PointY,CMD_LEFT);
        }
        break;
    case V_KEY_RIGHT:
        if(bVolum[bVolCounter] < MaxVol[bVolCounter])
        {
            bVolum[bVolCounter]++;
            ShowKaraOkeBar(gui_hdc,bVolCounter,bVolum[bVolCounter],PointX,PointY,CMD_RIGHT);
        }
        else if(bVolCounter > 2)//need recycle	//gushun for karaoke volume
        {
            bVolum[bVolCounter]=0;
            ShowKaraOkeBar(gui_hdc,bVolCounter,bVolum[bVolCounter],PointX,PointY,CMD_RIGHT);
        }
        break;
    }
    SetTimer(OSD3_TM_ID, KaraokeTimer,TIME_10SEC);

    //    ShowOSDOnOff(C_ON);//dvd audio sh

    OSD_Setup_Parameter.bKaraEcho = bVolum[KOK_STAGE_ECHO];
    OSD_Setup_Parameter.bKaraKey = bVolum[KOK_STAGE_KEY];
    //OSD_Setup_Parameter.bKaraVoiceVol = bVolum[2];
    //OSD_Setup_Parameter.bKaraVoiceVol = bVolum[3];
    tempv = bVolum[KOK_STAGE_VOICE];
    tempMelody = bVolum[KOK_STAGE_MELODY];
    OSD_Setup_Parameter.bKaraOKVoice = tempv;
    OSD_Setup_Parameter.bKaraOKMelody = tempMelody;
    OSD_Setup_Parameter.bMasterVolume = bVolum[KOK_STAGE_VOLUME];	//gushun for karaoke volume
    UiSetKOKParam(bVolCounter,bVolum[bVolCounter]);
}
#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -