|

楼主 |
发表于 2017-7-19 16:31:06
|
显示全部楼层
回 eric2013 的帖子
eric2013:
聚焦的这个问题只能多试试了,另外为什么要聚焦到最后一行呢,不能的话,直接按键发送自定义窗口消息,在自定义消息里面直接调整滚动条的位置即可SCROLLBAR_SetValue,这样很方便就是实现了翻页功能,这是不是你需要的。  硬汉哥,我尝试用了按键发送自定义窗口消息,聚焦的行数可以按照计划执行,但是你所说的调整滚动条位置实现翻页没有成功,请你看下代码,谢谢~
static void _cbDialog(WM_MESSAGE * pMsg)
{
WM_HWIN hItem;
char acBuffer[200];
char acNum[5];
int NCode;
int Id;
U32 i;
SCROLLBAR_Handle hScrollbar;
int selNum;
int scrollNum;
switch (pMsg->MsgId)
{
case WM_INIT_DIALOG:
... ...
hItem = WM_GetDialogItem(pMsg->hWin, ID_LISTVIEW_0);
LISTVIEW_SetGridVis(hItem, 1);
LISTVIEW_SetLBorder(hItem, 2);
LISTVIEW_SetRowHeight(hItem, 30);
LISTVIEW_SetHeaderHeight(hItem, 0);
LISTVIEW_SetFont(hItem, GUI_FONT_24B_ASCII);
LISTVIEW_AddColumn(hItem, 60, "", GUI_TA_LEFT);
LISTVIEW_AddColumn(hItem, 570, "", GUI_TA_LEFT);
for (i = 0; i < 30; i++)
{
LISTVIEW_AddRow(hItem, NULL);
sprintf(acNum, "%0.4d", i);
LISTVIEW_SetItemText(hItem, 0, i, acNum);
sprintf(acBuffer, "Item %d", i);
LISTVIEW_SetItemText(hItem, 1, i, acBuffer);
}
hScrollbar = SCROLLBAR_CreateAttached(hItem, GUI_ID_VSCROLL);
SCROLLBAR_SetWidth(hScrollbar, 15);
break;
case WM_KEY:
switch(((WM_KEY_INFO*)(pMsg->Data.p))->Key)
{
... ...
case GUI_KEY_PAGEDOWN: // 并非GUI.h里面的GUI_KEY_PGDOWN
WM_SendMessageNoPara(pMsg->hWin, MSG_TEST);
break;
... ...
}
break;
case MSG_TEST:
scrollNum = SCROLLBAR_GetValue(hListView);
SCROLLBAR_SetValue(hListView, scrollNum + 16); // 没有实现翻页
selNum = LISTVIEW_GetSel(hListView);
LISTVIEW_SetSel(hListView, selNum + 16); // 实现了翻页后行数的聚焦,比如目前聚焦在0000行,翻页后聚焦在0016行
break;
}
... ...
} |
|