运行时在列表视图中以语言C在Windows中加载GTK

问题描述

大家好,我创建了这个小脚本,想法是,创建一个listview并读取一个memap文件(直到现在为止),但是我想在运行时加载项目(不断地,读取mem文件并将数据放在列表框中),我发现是否存在与此相关的示例,但我什么也没找到,任何人都有示例或类似示例

#include <windows.h>
#include <stdio.h>
#include <conio.h>
#include <tchar.h>
#pragma comment(lib,"user32.lib")

#define BUF_SIZE 256
TCHAR szName[] = TEXT("Test");
enum
{
  COL_ID,COL_COGNOME,COL_NOME,NUM_COLS
} ;
static GtkTreeModel *
create_and_fill_model (void)
{
    HANDLE hMapFile;
    LPCTSTR pBuf;
    int nn=1;
    hMapFile = OpenFileMapping(
        FILE_MAP_ALL_ACCESS,FALSE,szName);                
    if (hMapFile == NULL)
    {
        _tprintf(TEXT("Could not open file mapping object (%d).\n"),GetLastError());
    }
    pBuf = (LPTSTR)MapViewOfFile(hMapFile,FILE_MAP_ALL_ACCESS,BUF_SIZE);
    if (pBuf == NULL)
    {
        _tprintf(TEXT("Could not map view of file (%d).\n"),GetLastError());
        CloseHandle(hMapFile);
    }
  GtkListStore  *store; 
  GtkTreeIter    iter;   
  store = gtk_list_store_new (NUM_COLS,G_TYPE_UINT,G_TYPE_STRING,G_TYPE_STRING);
  gtk_list_store_append (store,&iter);
  gtk_list_store_set (store,&iter,COL_ID,1,pBuf,"fabio",-1);
  gtk_list_store_append (store,2,"Di Matteo","Gioacchino",-1);
    UnmapViewOfFile(pBuf);
    CloseHandle(hMapFile);
  return GTK_TREE_MODEL (store);

}

static GtkWidget *
create_view_and_model (void)
{
  GtkCellRenderer     *renderer;  
  GtkTreeModel        *model;     
  GtkWidget           *view;     
  view = gtk_tree_view_new ();  
  renderer = gtk_cell_renderer_text_new ();
  gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (view),-1,"Data",renderer,"text",NULL);
  renderer = gtk_cell_renderer_text_new ();
  gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (view),"Prezzo","Volume",NULL);
  model = create_and_fill_model ();
  gtk_tree_view_set_model (GTK_TREE_VIEW (view),model);
  g_object_unref (model);

  return view;
}

int
main (int argc,char **argv)
{
  GtkWidget *window; 
  GtkWidget *view;  
  gtk_init (&argc,&argv);
  window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
  gtk_window_set_default_size (GTK_WINDOW (window),200,(GetSystemMetrics(SM_CYSCREEN)-175));
  g_signal_connect (window,"delete_event",gtk_main_quit,NULL); /* dirty */
  view = create_view_and_model ();
  gtk_container_add (GTK_CONTAINER (window),view);
  gtk_widget_show_all (window);
  gtk_main ();
  return 0;
}```

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)