|

楼主 |
发表于 2024-10-21 13:41:56
|
显示全部楼层
大佬,下面这个是我描述的函数,已经是调用了LISTBOX_SetSel()
//========================================================================
void _cbViewTaskSet2Win(WM_MESSAGE * pMsg)
{
int NCode;
int Id;
WM_HWIN hItem;
switch (pMsg->MsgId)
{
case WM_PAINT:
{
GUI_RECT Rect;
if(POWER_CHANNEL_1 == g_CurSelectPowerChannel)
{
l_snprintf((char *)g_DispBuf,sizeof(g_DispBuf),"CH1 ");
}
else if(POWER_CHANNEL_2 == g_CurSelectPowerChannel)
{
l_snprintf((char *)g_DispBuf,sizeof(g_DispBuf),"CH2 ");
}
else
{
l_snprintf((char *)g_DispBuf,sizeof(g_DispBuf),"CH1&CH2 ");
}
strcat((char *)g_DispBuf,(const char *)GetLanguageString(STR_TASK_SETING));
GUI_SetColor(VIEW_TITLE_COLOR);
GUI_SetBkColor(VIEW_TITLE_BKCOLOR);
WM_GetClientRect(&Rect);
Rect.y1 = VIEW_TITLE_YSIZE - 1 - 1;
GUI_DispStringInRectFill((char *)g_DispBuf,&Rect,GUI_TA_HCENTER | GUI_TA_VCENTER);
GUI_SetColor(VIEW_TITLE_LINE_COLOR);
GUI_DrawHLine(VIEW_TITLE_YSIZE - 1,0,Rect.x1);
}
break;
case WM_INIT_DIALOG:
{
INT32U i;
INT32U bHaveFocuse;
ViewTaskData_t ViewTaskData;
INT32U Sel,Cnt;
g_TaskContent.BalanceVoltage_mV = CalculatorBestBalanceVoltage(g_CurSelectPowerChannel);
WM_SetCallback(pMsg->hWin,_cbWINDOW);
hItem = WM_GetDialogItem(pMsg->hWin, ID_LISTBOX_0);
g_TaskContent.PowerVoltage_mV = g_GUIPara.OutputVoltage[g_CurSelectPowerChannel&1] * 100;
g_TaskContent.SetPower_mW = g_GUIPara.OutputPower_W[g_CurSelectPowerChannel&1] * 1000;
//ViewTaskData.ItemDataFocusMsk = 0x3F;
ViewTaskData.ItemDataFocusMsk = 0xFF;
//ViewTaskData.ItemNoDataMsk = 0x18;
ViewTaskData.ItemNoDataMsk = 0x78;
WINDOW_SetUserData(pMsg->hWin,&ViewTaskData,sizeof(ViewTaskData));
WINDOW_SetBkColor(pMsg->hWin,VIEW_TITLE_BKCOLOR);
// Initialization of 'Listbox'
hItem = WM_GetDialogItem(pMsg->hWin, ID_LISTBOX_0);
bHaveFocuse = TRUE;
LISTBOX_SetUserData(hItem,&bHaveFocuse,sizeof(bHaveFocuse));
for(i = ID_VTASK2_TASK;i <= ID_VTASK2_CANCEL;i++)
{
LISTBOX_AddString(hItem, "");
}
LISTBOX_SetTextAlign(hItem, GUI_TA_VCENTER | GUI_TA_LEFT);
LISTBOX_SetFont(hItem, &GUI_DEFAULT_FONT);
LISTBOX_SetItemSpacing(hItem, LIST_BOX_ITEM_SIZE - GUI_GetYDistOfFont(LISTBOX_GetFont(hItem)));
LISTBOX_SetOwnerDraw(hItem, _ViewTask2ListBoxOwnerDraw);
LISTBOX_SetSel(hItem,g_CurPageId.Id - 1);
WM_SetCallback(hItem, _cbViewListBoxUser);
//LISTBOX_SetBkColor(hItem,LISTBOX_CI_UNSEL,VIEW_BK_NFCOLOR);
Sel = LISTBOX_GetSel(hItem);
Cnt = LISTBOX_GetNumItems(hItem);
hItem = WM_GetDialogItem(pMsg->hWin, ID_SCROLL_BAR1);
ScrollBar_SetValue(hItem,Sel,Cnt);
ScrollBar_SetColor(hItem,VIEW_ScrollBar_COLOR);
ScrollBar_SetBkColor(hItem,VIEW_BK_NFCOLOR);
ScrollBar_SetLBlank(hItem,1);
ScrollBar_SetRBlank(hItem,1);
}
break;
case WM_USER_UPDATA:
{
//ViewTaskData_t ViewTaskData;
//WINDOW_GetUserData(pMsg->hWin,&ViewTaskData,sizeof(ViewTaskData));
//g_TaskContent.Current = C_100MA_TO_MA(GetTaskCurrent(g_TaskContent.Task));
//ViewTaskData.ItemDataFocusMsk = 0x0F;
//ViewTaskData.ItemNoDataMsk = 0x14;
//WINDOW_SetUserData(pMsg->hWin,&ViewTaskData,sizeof(ViewTaskData));
}
break;
case WM_KEY:
{
if (((WM_KEY_INFO*)(pMsg->Data.p))->PressedCnt)
{
ProcessKeyEvent(((WM_KEY_INFO*)(pMsg->Data.p))->Key, ((WM_KEY_INFO*)(pMsg->Data.p))->PressedCnt);
}
}
break;
case WM_NOTIFY_PARENT:
{
Id = WM_GetId(pMsg->hWinSrc);
NCode = pMsg->Data.v;
switch (Id)
{
case ID_LISTBOX_0: // Notifications sent by 'Listbox'
switch (NCode)
{
case WM_NOTIFICATION_CLICKED: break;
case WM_NOTIFICATION_RELEASED: break;
case WM_NOTIFICATION_SEL_CHANGED:
hItem = WM_GetDialogItem(pMsg->hWin, ID_LISTBOX_0);
//LISTBOX_SetBkColor(hItem,LISTBOX_CI_SEL,VIEW_BK_FCOLOR);
g_PrePageId.Id= g_CurPageId.Id;
g_CurPageId.Id = LISTBOX_GetSel(hItem) + 1;
hItem = WM_GetDialogItem(pMsg->hWin,ID_SCROLL_BAR1);
ScrollBar_SetValue(hItem,g_CurPageId.Id - 1,ScrollBar_GetNumbers(hItem));
break;
}
break;
}
}
break;
default: WM_DefaultProc(pMsg); break;
}
}
|
|