SWIPELIST删除Item后Item位置自动对齐但附着在其上的小部件位置错乱如下图所示:
情况大概就是上面这两个GIF这样的情况,我简单的描述一下。
创建SWIPELIST的代码如下:
- hSwpParent = WM_CreateWindowAsChild(0, 0, xSize/2, ySize, WM_HBKWIN, WM_CF_SHOW | WM_CF_MEMDEV | WM_CF_HASTRANS, _cbParent, 0);
- hSwpLst = SWIPELIST_CreateEx(1, 1, xSize / 2-40, ySize - 1, hSwpParent, WM_CF_SHOW | WM_CF_MOTION_Y | WM_CF_HASTRANS, 0, GUI_ID_SWIPELIST0);
- //
- //以下代码用来配置swipelist 的相关参数
- //
- SWIPELIST_AddSepItem(hSwpLst, "living room", 40);
- SWIPELIST_SetBkColor(hSwpLst, SWIPELIST_CI_BK_SEP_ITEM,GUI_RED);
- //SWIPELIST_SetBkColor(hSwpLst, SWIPELIST_CI_BK_ITEM_UNSEL, GUI_TRANSPARENT);
- for (i = 0; i < 7; i++) {
- sprintf(text, "Room%d", i);
- SWIPELIST_AddItem(hSwpLst, (const char*)text, 40);
- //_ahText[i] = TEXT_CreateEx(0, 0, 50, 39, hSwpParent, WM_CF_SHOW, 0, USER_ID_TEXT + i, "3癈");
- //TEXT_SetTextAlign(_ahText[i], TEXT_CF_VCENTER | TEXT_CF_HCENTER);
- //TEXT_SetBkColor(_ahText[i], GUI_GRAY);
- //TEXT_SetFont(_ahText[i], GUI_FONT_16B_1);
- _ahText[i] = BUTTON_CreateEx(0, 0, 40, 20, hSwpParent, WM_CF_SHOW, 0, USER_ID_TEXT + i);
- BUTTON_SetBkColor(_ahText[i], BUTTON_CI_UNPRESSED, GUI_BLUE);
- SWIPELIST_ItemAttachWindow(hSwpLst, i + 1, _ahText[i], 138, 0);
- }
- hButton = BUTTON_CreateEx(203, 5, 35, 20, hSwpParent, WM_CF_SHOW | WM_CF_HASTRANS, 0, GUI_ID_BUTTON0);
- BUTTON_SetText(hButton, "Del");
复制代码 创建了一个按钮当按钮松开的时候就SWIPLIST_DeleteItem()来删除一个Item这里固定删除的是ItemIndex为3的Item。
但是删除了Item后Item会自动对齐,附着在Item上的窗口却不会跟着Item一起对齐?我认为是删除后需要重绘窗口于是我就WM_InvalidateWindow了SwipeList的窗口和其父窗口发现并没有用,甚至我把每个附着的小窗口句柄都给记录下来并重绘这些附着小窗口但还是位置不正确。
我们知道当删除Item的时候其附着的小窗口也将被删除在发送重绘命令的时候也做了处理- case WM_NOTIFICATION_RELEASED:
- switch (ID) {
- case GUI_ID_BUTTON0 :
- hSwp = WM_GetDialogItem(pMsg->hWin, GUI_ID_SWIPELIST0);
- SWIPELIST_DeleteItem(hSwp,3);
- WM_InvalidateWindow(hSwpLst);
- WM_InvalidateWindow(hSwpParent);
- for (i = 0; i < 11; i++) {
- if ((_ahText[i] != 0) && (WM_IsWindow(_ahText[i]))) {
- WM_InvalidateWindow(_ahText[i]);
-
- }
- }
- break;
复制代码
但是 附着小窗口 位置不动的时候滑动一下SWIPELIST他窗口就正确了。但是超出屏幕的窗口又不能显示了。不知道是我哪里没有理解对。有大佬能指点一下么?
|