代码之家  ›  专栏  ›  技术社区  ›  Will Dean

删除后的CVSListBox通知

  •  3
  • Will Dean  · 技术社区  · 15 年前

    CVSListBox控件提供了可重写的虚拟函数,用于添加或重命名项以及更改它们的顺序—所有这些都很好地工作。

    但是,对于删除项,唯一的重写是OnBeforeRemoveItem,它在删除项之前调用,并且必须从中返回TRUE/FALSE才能允许删除。一旦删除发生,就没有特定的通知。

    删除后获得通知的最佳方式是什么?

    2 回复  |  直到 15 年前
        1
  •  1
  •   Aidan Ryan natdico    15 年前

    • 在OnBeforeRemoveItem重写中执行处理,就好像该项已被删除一样
    • 在已删除的事件后提出您自己的OnAfterItemRemoved
    • 看看是否可以获得底层列表控件的句柄(不管它是什么)并钩住它的一个事件
        2
  •  0
  •   Albertino80    12 年前

    尝试以下操作:

    class my_lbox : public CVSListBox
    {
        protected:
    
            BOOL OnBeforeRemoveItem(int what_item)
            {
                CString txt = GetItemText(what_item);
                DWORD_PTR idata = GetItemData(what_item);
    
                if(true) //up to you to check if this item can be removed
                {
                    OnAfterRemoveItem(txt,idata);
                    return TRUE;
                }
                return FALSE;
            }
    
            void OnAfterRemoveItem(const CString& txt, DWORD_PTR idata)
            {
                CString info;
                info.Format(L"Removing item:'%s'",txt);
    
                MessageBox(info);
            }
    };
    

    希望有帮助。

    推荐文章