需要将 wxListCtrl 的代码更改为虚拟样式 wxListCtrl 的工作代码

Need code for wxListCtrl change to working code for virtual style wxListCtrl

我是 c++ 的新手,我用于 GUI wxWidget。我的问题是 wxListCtrl 的这段代码如何更改为虚拟 ListCtrl 的工作代码...

现在我的代码在下面并且可以工作,但我必须尝试使用​​虚拟样式

wxString SQL = "SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = '" + table + "'";

    int gstate = mysql_query(conn,SQL);
        if(!gstate){
            res = mysql_store_result(conn);
            int num = 0;

            lcData->SetColumnWidth(0,wxLIST_AUTOSIZE_USEHEADER);
            lcData->InsertColumn(0,"rb.");

            while(row = mysql_fetch_row(res)){
                lcData->SetColumnWidth(num+1, wxLIST_AUTOSIZE_USEHEADER);
                lcData->InsertColumn(num+1,row[0]);

                num++;
            }

            if(res != NULL)
                mysql_free_result(res);

        }
    SQL = tcSQL->GetValue();

    tcLog->AppendText(SQL+"\n");
    gstate = mysql_query(conn,SQL);

            if(!gstate){
                res = mysql_store_result(conn);
                long num_field = mysql_num_fields(res);

                   long num = 0;
                lcData->SetColumnWidth(0,40);

                while(row = mysql_fetch_row(res)){

                    lcData->InsertItem(num, wxString::Format(_T("%4d"),num+1));

                    for(long i = 0; i < num_field; i++){

                        lcData->SetItem(num,i+1,row[i] );

                    }

                    num++;
                }

                if(res != NULL)
                    mysql_free_result(res);

我在哪里编译程序 运行 我有这个错误: SharedScreens

谢谢。 YuMERA

虚拟 wxListCtrl 的想法是您不将数据放入其中,而是在控件需要时根据请求提供数据。因此,要使用虚拟控件,您需要更改代码结构并避免首先从数据库中获取所有项目,而是根据需要从覆盖的 OnGetItemText() 方法中检索它们。当然,为了能够覆盖它,您必须先从 wxListCtrl 派生出您自己的 class 并且您还需要告诉控件它将有多少项(您将获得来自 select count(*) ... 您的查询)。