?? widget.lst
字號:
*/
void WIDGET_AndState(WM_HWIN hObj, int Mask) {
U16 StateNew;
WIDGET* pWidget = WIDGET_H2P(hObj);
StateNew = pWidget->State & (~Mask);
if (pWidget->State != StateNew) {
pWidget->State = StateNew;
WM_Invalidate(hObj);
}
}
/*********************************************************************
*
* WIDGET_SetInactive
*/
void WIDGET_Disable(WM_HWIN hObj) {
WIDGET* pWidget;
if (hObj) {
WM_LOCK();
pWidget = WIDGET_H2P(hObj);
if (pWidget->State & WIDGET_STATE_ENABLED) {
pWidget->State &= ~WIDGET_STATE_ENABLED;
WM_Invalidate(hObj);
}
WM_UNLOCK();
}
}
/*********************************************************************
*
* WIDGET_Enable
*/
C51 COMPILER V8.05a WIDGET 04/11/2008 14:19:39 PAGE 5
void WIDGET_Enable(WM_HWIN hObj) {
WIDGET* pWidget;
if (hObj) {
WM_LOCK();
pWidget = WIDGET_H2P(hObj);
if ((pWidget->State & WIDGET_STATE_ENABLED) == 0) {
pWidget->State |= WIDGET_STATE_ENABLED;
WM_Invalidate(hObj);
}
WM_UNLOCK();
}
}
void WIDGET__Init(WIDGET* pWidget, U16 State) {
pWidget->pEffect = _pEffectDefault;
pWidget->State = State;
}
/*********************************************************************
*
* WIDGET_HandleActive
*/
int WIDGET_HandleActive(WM_HWIN hObj, WM_MESSAGE* pMsg) {
WM_MESSAGE Msg;
WIDGET* pWidget = WIDGET_H2P(hObj);
switch (pMsg->MsgId) {
case WM_GET_ID:
pMsg->Data.v = pWidget->Id;
return 0; /* Message handled -> Return */
case WM_SET_FOCUS:
if (pMsg->Data.v == 1) {
WIDGET_SetState(hObj, pWidget->State | WIDGET_STATE_FOCUS);
} else {
WIDGET_SetState(hObj, pWidget->State & ~WIDGET_STATE_FOCUS);
}
Msg.MsgId = WM_NOTIFY_CHILD_HAS_FOCUS;
Msg.Data.v = pMsg->Data.v;
WM_SendToParent(hObj, &Msg);
return 0;
case WM_GET_HAS_FOCUS:
pMsg->Data.v = pWidget->State & WIDGET_STATE_FOCUS;
return 0; /* Message handled */
case WM_SET_ENABLE:
if (pMsg->Data.v) {
WIDGET_OrState(hObj, WIDGET_STATE_ENABLED);
} else {
WIDGET_AndState(hObj, WIDGET_STATE_ENABLED);
}
case WM_GET_ACCEPT_FOCUS:
pMsg->Data.v = (pWidget->State & WIDGET_STATE_FOCUSSABLE) ? 1 : 0; /* Can handle focus
- */
return 0; /* Message handled */
case WM_GET_INSIDE_RECT:
WIDGET__GetInsideRect(pWidget, (GUI_RECT*)pMsg->Data.p);
return 0; /* Message handled */
}
return 1; /* Message NOT handled */
}
C51 COMPILER V8.05a WIDGET 04/11/2008 14:19:39 PAGE 6
void WIDGET__SetScrollState(WM_HWIN hWin, const WM_SCROLL_STATE* pVState, const WM_SCROLL_STATE* pHState)
-{
WM_HWIN hScroll;
/* vertical scrollbar */
hScroll = WM_GetDialogItem(hWin, GUI_ID_VSCROLL);
WM_SetScrollState(hScroll, pVState);
/* horizontal scrollbar */
hScroll = WM_GetDialogItem(hWin, GUI_ID_HSCROLL);
WM_SetScrollState(hScroll, pHState);
}
void WIDGET__DrawFocusRect(WIDGET* pWidget, const GUI_RECT* pRect, int Dist) {
GUI_RECT Rect;
if (pWidget->State & WIDGET_STATE_VERTICAL) {
_RotateRect90(pWidget, &Rect, pRect);
pRect = &Rect;
}
GUI_DrawFocusRect(pRect, Dist);
}
void WIDGET__DrawVLine(WIDGET* pWidget, int x, int y0, int y1) {
if (pWidget->State & WIDGET_STATE_VERTICAL) {
GUI_RECT r0, r1;
r0.x0 = x;
r0.x1 = x;
r0.y0 = y0;
r0.y1 = y1;
_RotateRect90(pWidget, &r1, &r0);
GUI_DrawHLine(r1.y0, r1.x0, r1.x1);
} else {
GUI_DrawVLine(x, y0, y1);
}
}
/*********************************************************************
*
* 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);
}
/*********************************************************************
*
* WIDGET__EFFECT_ ...
*/
void WIDGET__EFFECT_DrawDownRect(WIDGET* pWidget, GUI_RECT* pRect) {
C51 COMPILER V8.05a WIDGET 04/11/2008 14:19:39 PAGE 7
GUI_RECT Rect;
if (pRect == NULL) {
WM_GetClientRect(&Rect);
pRect = &Rect;
}
if (pWidget->State & WIDGET_STATE_VERTICAL) {
_RotateRect90(pWidget, &Rect, pRect);
pRect = &Rect;
}
pWidget->pEffect->pfDrawDownRect(pRect);
}
void WIDGET__EFFECT_DrawDown(WIDGET* pWidget) {
WIDGET__EFFECT_DrawDownRect(pWidget, NULL);
}
void WIDGET__EFFECT_DrawUpRect(WIDGET* pWidget, GUI_RECT* pRect) {
GUI_RECT Rect;
if (pWidget->State & WIDGET_STATE_VERTICAL) {
_RotateRect90(pWidget, &Rect, pRect);
pRect = &Rect;
}
pWidget->pEffect->pfDrawUpRect(pRect);
}
void WIDGET_SetDefaultEffect(const WIDGET_EFFECT* pEffect) {
_pEffectDefault = pEffect;
}
#else /* Avoid problems with empty object modules */
402 void WIDGET_C(void) {}
403 #endif /* GUI_WINSUPPORT */
404
405
406
407
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -