📄 uilistw.c
字号:
pre[2]=(Precent%10)+'0';
pre[3]='%';
pre[4]=0;
DrawStringGbkEx((UINT16)(win->x+WListObj->ItemLeft+250) ,(UINT16)(win->y+2+(WListObj->Itemheight*j+WListObj->TitleHeight)) , 200 , (char*)pre , Font16X16, &color , 0 );
}
}
//*/
if (win->style&WES_Unicode)
{
if ((win->style&WES_Scroll) && (i == WListObj->CurrItemIndex))
{
INT16U StrLen = MeasureStringPixLen((FileList->pText), Font16X16);
if (StrLen > 300 /*&& !(win->windowState &WST_DEACTIVE)*/ ) //080701,huangsl,用于解决瞬时无显示的问题.
{
WListObj->pScrollTxtWin->style |= WS_ACTIVE;
WListObj->pScrollTxtWin->x = (UINT16)(win->x + WListObj->ItemLeft + 20);
WListObj->pScrollTxtWin->y = (UINT16)(win->y + 2 + (WListObj->Itemheight * (WListObj->CurrItemDispLine - 1) + WListObj->TitleHeight));
//WindowSendMessage(WListObj->pScrollTxtWin,WM_SetTxt,(WMPARAM)(FileList->pText),0);
// WindowSendMessage(WListObj->pScrollTxtWin, WM_PAINT, 0, 0);
}
else
{
WListObj->pScrollTxtWin->style &= (~WS_ACTIVE);
DrawStringEx((UINT16)(win->x + WListObj->ItemLeft + 20) , (UINT16)(win->y + 2 + (WListObj->Itemheight*j + WListObj->TitleHeight)) , win->w/*200*/ , FileList->pText , Font16X16, &color , 0);
}
}
else
DrawStringEx((UINT16)(win->x + WListObj->ItemLeft + 20) , (UINT16)(win->y + 2 + (WListObj->Itemheight*j + WListObj->TitleHeight)) , win->w/*200*/ , FileList->pText , Font16X16, &color , 0);
}
else
DrawStringGbkEx((UINT16)(win->x + WListObj->ItemLeft + 20) , (UINT16)(win->y + 2 + (WListObj->Itemheight*j + WListObj->TitleHeight)) , win->w/*200*/ , FileList->pText , Font16X16, &color , 0);
j++;
}
nTick1 = RockGetNTick();
}
else
{
for (i = FirstLineIndx;i < EndLineIndx;i++)
{
ColorDesc color = {COLOR_WHITE, COLOR_WHITE, DSPM_Transp};
UINT16 LIcon = 0;
pItem = (ListItem*)ListGetItem(WListObj->ListList, i);
if (i == WListObj->CurrItemIndex)
color.forward = 0x00ffffff - color.forward;
LIcon = (UINT16)pItem->ICON;
//自动添加左侧选中图标
if ((win->style&WES_MaskSel) && (i == WListObj->CurrSelItemIndex))
LIcon = BID_Select12;
DrawBmpIdEx((UINT16)(win->x + WListObj->ItemLeft),
(UINT16)(win->y + 2 + (WListObj->Itemheight*j + WListObj->TitleHeight)),
LIcon, NULL, DSPM_Transp);
/*DrawPic((UINT16)(win->x+WListObj->ItemLeft),(UINT16)(win->y+2+(WListObj->Itemheight*j+WListObj->TitleHeight)),pItem->ICON);*/
//箭头
if (pItem->ICON&0xFFFF0000)
{
if (WListObj->CurrItemDispLine == (j + 1))
DrawBmpIdEx(WListObj->ArrowSel.X, (UINT16)(win->y + (WListObj->Itemheight*j + WListObj->TitleHeight)), WListObj->ArrowSel.BmpID, NULL, DSPM_Transp);
else
DrawBmpIdEx(WListObj->Arrow.X, (UINT16)(win->y + (WListObj->Itemheight*j + WListObj->TitleHeight)), WListObj->Arrow.BmpID, NULL, DSPM_Transp);
}
DrawStringIdEx((UINT16)(win->x + WListObj->ItemLeft + 20) , (UINT16)(win->y + 2 + (WListObj->Itemheight*j + WListObj->TitleHeight)) , 200 , pItem->Text , Font16X16, &color , 0);
j++;
}
}
WIN_CLEARPAIT(win);
//TR("List Paint Time %d",nTick0-nTick1);
return TRUE;
}
/*----------------------------------------------------------------------
Name : ListWinCreate
Desc : 列表框(弹出菜单)创建消息
Params:
Return: 处理结果
Author: Lingzj
Date : 070830
----------------------------------------------------------------------*/
UINT32 ListWinCreate(WINDOW* win , WMPARAM wParam, WLPARAM lParam)
{
W_List *WListObj = NULL;
// UILISTFTABLE Fun;
//TR("Creat List--begin","");
//NeedPrintHeapInfo(TRUE);
WListObj = MallocClass(W_List);
if (NULL == WListObj)
return FALSE;
//win->style=win->style|WES_MaskSel; //for test
WListObj->style = win->style | WS_TOUCHUP;
WListObj->Itemheight = 20; /*条目高度*/
WListObj->ItemLeft = 20; /*条目左缩进*/
WListObj->TitleHeight = 2;//4 /*标题高度*/
WListObj->TitleText = win->CaptionID; /*标题文本*/
WListObj->IconBackground = win->BmpID; /*背景图片*/
WListObj->IconItemSelect.BmpID = win->BmpID + 1; //选中条图片
WListObj->IconItemSelect.X = win->x;
WListObj->IconItemSelect.Y = win->y;//+WListObj->Itemheight;
WListObj->Arrow.BmpID = BID_Jiantou1; /*右侧箭头未选中图片*/
WListObj->Arrow.X = 297; /*箭头位置*/
WListObj->ArrowSel.BmpID = BID_Jiantou2; /*右侧选中箭头*/
WListObj->ArrowSel.X = 297;
#if defined( GUI_DLIST ) //071210,huangsl,由于 某些项目没有这个需求, 因此增加 改编译开关.
if (win->style&WES_Oppoleft)
{
WListObj->Itemheight = 25; /*条目高度*/
WListObj->ItemLeft = 5; /*条目左缩进*/
WListObj->TitleHeight = 20;//4 /*标题高度*/
WListObj->TitleText = win->CaptionID; /*标题文本*/
WListObj->IconBackground = 0; /*背景图片*/
WListObj->IconItemSelect.BmpID = BID_listselectfouc; //选中条图片
WListObj->IconItemSelect.X = win->x;
WListObj->IconItemSelect.Y = win->y; //+WListObj->Itemheight;
WListObj->Arrow.BmpID = BID_Jiantou1; /*右侧箭头未选中图片*/
WListObj->Arrow.X = 297; /*箭头位置*/
WListObj->ArrowSel.BmpID = BID_Jiantou2; /*右侧选中箭头*/
WListObj->ArrowSel.X = 297;
}
if (win->style&WES_OppoRight)
{
WListObj->Itemheight = 25; /*条目高度*/
WListObj->ItemLeft = 5; /*条目左缩进*/
WListObj->TitleHeight = 20;//4 /*标题高度*/
WListObj->TitleText = win->CaptionID; /*标题文本*/
WListObj->IconBackground = 0; /*背景图片*/
WListObj->IconItemSelect.BmpID = BID_listselectright; //选中条图片
WListObj->IconItemSelect.X = win->x;
WListObj->IconItemSelect.Y = win->y; //+WListObj->Itemheight;
WListObj->Arrow.BmpID = BID_Jiantou1; /*右侧箭头未选中图片*/
WListObj->Arrow.X = 297; /*箭头位置*/
WListObj->ArrowSel.BmpID = BID_Jiantou2; /*右侧选中箭头*/
WListObj->ArrowSel.X = 297;
}
#endif
WListObj->WinFullLine = (win->h - WListObj->TitleHeight) / WListObj->Itemheight; /*一屏可显示的行数*/
WListObj->CurrItem = NULL; /*当前条目指针*/
WListObj->CurrItemIndex = 0; /*当前条目ID*/
WListObj->CurrSelItemIndex = 0;
WListObj->MaxItemIndex = 0; /*添加的总条目数*/
WListObj->CurrItemDispLine = 1; /*当前条目所在行*/
WListObj->ListList = ListCreate(LS_NONE, NULL); /*创建动态列表*/
if (NULL == WListObj->ListList)
return FALSE;
if ((win->style&WES_FileList) && (win->style&WES_Unicode) && (win->style&WES_Scroll))
{
WListObj->pScrollTxtWin = WindowCreateEx(win ,
WS_TICK | WS_CHILDS | WES_ScrollLeftRight,
WID_ScrollTxt2,
0, 0,
win->w - (WListObj->ItemLeft * 5) / 2, 16,
0,
0,
0,
0,
WinScrollTextMap,
NULL);
}
win->Data = WListObj;
//TR("Creat List--Ok","");
// if(win->style&WS_TranspHalf)
// DspTskUpdateInit(DTSC_FRAMETRANS);
return TRUE;
}
/*----------------------------------------------------------------------
Name : ListWinDestroy
Desc : 列表框(弹出菜单)关闭消息
Params:
Return: 处理结果
Author: Lingzj
Date : 070830
----------------------------------------------------------------------*/
UINT32 ListWinDestroy(WINDOW* win , WMPARAM wParam, WLPARAM lParam)
{
W_List *WListObj = (W_List *)win->Data;
//TR("Free List--begin","");
//080602,huangsl,LJZ发现的BUG,会导致 pScrollTxtWin 窗口被关闭两次.
//在 DESTROY里面关闭另外一个窗口,如果 LIST win 本身也是子窗口,则关闭他们的父窗口的
//时候,pScrollTxtWin就被关闭两次(父窗口关闭子窗口一次,下面语句又一次).
// if(WListObj->pScrollTxtWin)
// WindowDestroy(WListObj->pScrollTxtWin);
ListDestroy(WListObj->ListList);
FreeClass(WListObj);
//TR("Free List--Ok","");
//NeedPrintHeapInfo(FALSE);
if (win->style&WS_TranspHalf)
DspTskNormal();
return TRUE;
}
/*----------------------------------------------------------------------
Name : ListWinSetPic
Desc : 列表框(弹出菜单)设置图片
Params:
Return: 处理结果
Author: Lingzj
Date : 070830
----------------------------------------------------------------------*/
UINT32 ListWinSetPic(WINDOW* win , WMPARAM wParam, WLPARAM lParam)
{
W_List *WListObj = (W_List *)win->Data;
UINT16*pID = (UINT16*)lParam;
IconType Type = wParam;
switch (Type)
{
case Icon_Background:
WListObj->IconBackground = *pID;
break;
case Icon_ListSel:
WListObj->IconItemSelect.BmpID = (INT16U)(INT32U)lParam;//*pID;
break;
}
WindowInvalidateWindow(win);
return TRUE;
}
/*----------------------------------------------------------------------
Name : ListWinSetTxt
Desc : 列表框(弹出菜单)设置标题文本
Params:
Return: 处理结果
Author: Lingzj
Date : 070830
----------------------------------------------------------------------*/
UINT32 ListWinSetTxt(WINDOW* win , WMPARAM wParam, WLPARAM lParam)
{
W_List *WListObj = (W_List *)win->Data;
WListObj->TitleText = (UINT16)wParam;
return TRUE;
}
/*----------------------------------------------------------------------
Name : ListItemCmp
Desc : 列表条目比较
Params:
Return: 处理结果
Author: Lingzj
Date : 070830
----------------------------------------------------------------------*/
int ListItemCmp(ListItem* cs, ListItem* ct)
{
if ((cs->Text == ct->Text) && (cs->ICON == ct->ICON))
return 0;
return -1;;
}
/*弹出菜单类消息描述表*/
BEGIN_CHILDMESSAGE_MAP(WinListProcMap , CW_TYPE_LISTBOX)
ON_MESSAGE(WM_PAINT , ListWinPaint)
ON_MESSAGE(WM_COMMAND, ListWinCommand)
ON_MESSAGE(WM_DESTROY , ListWinDestroy)
ON_MESSAGE(WM_CREATE, ListWinCreate)
ON_MESSAGE(WM_ListAddItem, ListWinAddItem)
ON_MESSAGE(WM_ListChangeItem, ListWinChangeItem)
ON_MESSAGE(WM_ListDeleteItem, ListWinDeleteItem)
ON_MESSAGE(WM_KEY, ListWinKey)
ON_MESSAGE(WM_SetPic, ListWinSetPic)
ON_MESSAGE(WM_SetTxt, ListWinSetTxt)
ON_MESSAGE(WM_TOUCH , ListWinTouch)
ON_MESSAGE(WM_MenuSetCurrLine, ListWinSetCurrLine)
ON_MESSAGE(WM_ListGetMaxItem, ListWinGetMaxItem)
ON_MESSAGE(WM_ListGetCurItem, ListWinGetCurItemIndex)
ON_MESSAGE(WM_ListDeleteItemAll, ListWinDeleteAll)
END_MESSAGE_MAP()
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -