static JSBool HandleData(JSContext *cx, JSONParser *jp, JSONDataType type, const jschar *buf, uint32 len) { JSBool ok = JS_FALSE; switch (type) { case JSON_DATA_STRING: ok = HandleString(cx, jp, buf, len); break; case JSON_DATA_KEYSTRING: jp->objectKey = JS_NewUCStringCopyN(cx, buf, len); ok = JS_TRUE; break; case JSON_DATA_NUMBER: ok = HandleNumber(cx, jp, buf, len); break; case JSON_DATA_KEYWORD: ok = HandleKeyword(cx, jp, buf, len); break; default: JS_NOT_REACHED("Should have a JSON data type"); } js_FinishStringBuffer(jp->buffer); js_InitStringBuffer(jp->buffer); return ok; }
static JSBool HandleData(JSContext *cx, JSONParser *jp, JSONDataType type) { JSBool ok = JS_FALSE; if (!STRING_BUFFER_OK(jp->buffer)) return JS_FALSE; switch (type) { case JSON_DATA_STRING: ok = HandleString(cx, jp, jp->buffer->base, STRING_BUFFER_OFFSET(jp->buffer)); break; case JSON_DATA_KEYSTRING: js_AppendUCString(jp->objectKey, jp->buffer->base, STRING_BUFFER_OFFSET(jp->buffer)); ok = STRING_BUFFER_OK(jp->objectKey); break; case JSON_DATA_NUMBER: ok = HandleNumber(cx, jp, jp->buffer->base, STRING_BUFFER_OFFSET(jp->buffer)); break; case JSON_DATA_KEYWORD: ok = HandleKeyword(cx, jp, jp->buffer->base, STRING_BUFFER_OFFSET(jp->buffer)); break; default: JS_NOT_REACHED("Should have a JSON data type"); } js_FinishStringBuffer(jp->buffer); js_InitStringBuffer(jp->buffer); return ok; }
//重画函数 VOID CControlWnd::OnPaint() { CPaintDC dc(this); //获取位置 CRect rcClient; GetClientRect(&rcClient); //加载资源 CImageHandle HandleControlL(&m_ImageControlL); CImageHandle HandleControlM(&m_ImageControlM); CImageHandle HandleControlR(&m_ImageControlR); CImageHandle HandleArrow(&m_ImageArrow); //创建缓冲 CDC BufferDC; CBitmap BufferImage; BufferDC.CreateCompatibleDC(&dc); BufferImage.CreateCompatibleBitmap(&dc,rcClient.Width(),rcClient.Height()); //设置背景 BufferDC.SetBkMode(TRANSPARENT); BufferDC.SelectObject(&BufferImage); //绘画背景 m_ImageControlL.BitBlt(BufferDC,0,0); m_ImageControlR.BitBlt(BufferDC,rcClient.Width()-m_ImageControlR.GetWidth(),0); //加载资源 CImageHandle HandleNumber(&m_ImageNumber); CImageHandle HandleNumDot(&m_ImageNumberDot); //变量定义 LONG lScoreCurrent=m_lScoreCurrent; INT nNumberHeight=m_ImageNumber.GetHeight(); INT nNumberWidht=m_ImageNumber.GetWidth()/10; INT nXItemPos=rcClient.Width()-m_ImageControlR.GetWidth(); //绘画子项 for (WORD i=0;i<m_wItemCount;i++) { //绘画背景 nXItemPos-=m_SizeItem.cx; m_ImageControlM.BitBlt(BufferDC,nXItemPos,0); //绘画号码 LONG lNumber=(LONG)(lScoreCurrent%10L); m_ImageNumber.BitBlt(BufferDC.m_hDC,nXItemPos,12,nNumberWidht,nNumberHeight,lNumber*nNumberWidht,0); //绘画逗号 if( i != 0 && i%3 == 0 ) m_ImageNumberDot.AlphaDrawImage( &BufferDC,nXItemPos+m_SizeItem.cx-4,4,RGB(255,0,255) ); //当前焦点 if( m_wCurrentItem == i ) m_ImageArrow.AlphaDrawImage(&BufferDC,nXItemPos+6,4,RGB(255,0,255)); //设置变量 lScoreCurrent/=10L; } //绘画界面 dc.BitBlt(0,0,rcClient.Width(),rcClient.Height(),&BufferDC,0,0,SRCCOPY); //清理资源 BufferDC.DeleteDC(); BufferImage.DeleteObject(); return; }