stardict set gStarDictDataDir

static void set_data_dir()
{
    //set gStarDictDataDir;
#ifdef _WIN32
    HMODULE hmod;

    if ((hmod = GetModuleHandle(NULL))==0) //取得目前 process的载入位址
        exit(EXIT_FAILURE);
    char tmp_buf[256];
    if (GetModuleFileName(hmod, tmp_buf, sizeof(tmp_buf))==0)
        exit(EXIT_FAILURE);

    gchar* buf = g_path_get_dirname(tmp_buf);
    gStarDictDataDir=buf;   
    g_free(buf);
#else
    gStarDictDataDir = STARDICT_DATA_DIR;
#endif
}

GetModuleHandle是Windows API的函式,函式库是kernel32.dll,用来由模组名称得到该模组的头衔
GetModuleFileName也是Windows API的函式,函式库是kernel32.dll,用来从已载入的模组得知该可执行档的档名及完整路径

g_path_get_dirname是Glib函式库里杂项的实用函式,功能是取得取得档案名称的目录部份。

g_free是释放指向buf的记忆体。

这个函式的功能就是设定gStarDictDataDir的目录,在Windows下我测到是指向C:\Program Files\StarDict,因为StarDict就是安装在这里!