当前位置: 首页 > wzjs >正文

设计师的网站有哪些做网站的成本

设计师的网站有哪些,做网站的成本,嵌入式开发板哪款好,兰州一氧化碳ImGui 加载字体文件的函数似乎存在编码问题,这一点可能跟源文件的编码也有关系,我目前源文件编码是 UTF-16。 当参数中包含中文字符时,ImGui 内部将字符转换为宽字符字符集时候,采用的 MultiByteToWideChar API 参数不太对&#…

ImGui 加载字体文件的函数似乎存在编码问题,这一点可能跟源文件的编码也有关系,我目前源文件编码是 UTF-16。

当参数中包含中文字符时,ImGui 内部将字符转换为宽字符字符集时候,采用的 MultiByteToWideChar API 参数不太对,应该改为 CP_ACP 才对,原本它使用的是 CP_UTF8。

函数位于 imgui.cpp :

ImFileHandle ImFileOpen(const char* filename, const char* mode)
{
#if defined(_WIN32) && !defined(IMGUI_DISABLE_WIN32_FUNCTIONS) && (defined(__MINGW32__) || (!defined(__CYGWIN__) && !defined(__GNUC__)))// We need a fopen() wrapper because MSVC/Windows fopen doesn't handle UTF-8 filenames.// Previously we used ImTextCountCharsFromUtf8/ImTextStrFromUtf8 here but we now need to support ImWchar16 and ImWchar32!const int filename_wsize = ::MultiByteToWideChar(CP_ACP, 0, filename, -1, NULL, 0);const int mode_wsize = ::MultiByteToWideChar(CP_ACP, 0, mode, -1, NULL, 0);// Use stack buffer if possible, otherwise heap buffer. Sizes include zero terminator.// We don't rely on current ImGuiContext as this is implied to be a helper function which doesn't depend on it (see #7314).wchar_t local_temp_stack[FILENAME_MAX];ImVector<wchar_t> local_temp_heap;if (filename_wsize + mode_wsize > IM_ARRAYSIZE(local_temp_stack))local_temp_heap.resize(filename_wsize + mode_wsize);wchar_t* filename_wbuf = local_temp_heap.Data ? local_temp_heap.Data : local_temp_stack;wchar_t* mode_wbuf = filename_wbuf + filename_wsize;::MultiByteToWideChar(CP_ACP, 0, filename, -1, filename_wbuf, filename_wsize);::MultiByteToWideChar(CP_ACP, 0, mode, -1, mode_wbuf, mode_wsize);DBGPRINT(L"FileOpen Path: %s", filename_wbuf);return ::_wfopen(filename_wbuf, mode_wbuf);
#elsereturn fopen(filename, mode);
#endif

修改前,字体加载失败,然后我发现它处理相对路径的方式也不好。改用完整路径后也还是一样失败:

输出更多信息看看:
 

明显路径中中文编码出现了乱码 ?????。

按照上面方法修改后,你可能会在 Read 失败。继续看,发现这里可能有问题:
void*   ImFileLoadToMemory(const char* filename, const char* mode, size_t* out_file_size, int padding_bytes)

找到 ImFileRead(file_data, 1, file_size, f) 他直接写在条件里面的,我们把他改成两步:

size_t ret_size = ImFileRead(file_data, 1, file_size, f);
if (ret_size != file_size)
{ImFileClose(f);IM_FREE(file_data);return NULL;
}

最后,再次尝试:
 

绝对路径(加载字体文件)已经没有问题了;如果用相对路径则还有问题,并且可能与访问权限有关系。

我注入的程序在 C:\Windows\ 下,这里创建 imgui.ini 默认的配置文件失败。这个好解决,在加载函数前面加上一些路径检查和转换的代码,比如转为绝对路径(程序目录+文件名),然后检查权限,权限不够就改用 COM 或者提权(我这里不考虑跨平台,所以没关系,如果考虑跨平台,可能需要更多修改)。

http://www.dtcms.com/wzjs/536038.html

相关文章:

  • 阜宁做网站的公司电话网站引导页html模板
  • 微信公众号网站建设游戏微信整合wordpress
  • 宁波企业如何建网站网站彩票网站开发
  • 深圳市建设工程交易服务网站电影网站html模板
  • 电脑软件和网站怎么做wordpress 伪静态 中文
  • 建设网站哪家比较好新桥网站建设培训
  • 北京网站关键词优化公庐山网站建设
  • 网站建设项目需求说明高碑店网站建设价格
  • 网站301跳转代码怎么让百度快速收录网站
  • 做网站需要学多久中小企业加盟网站建设
  • 如何看网站有没有收录腾讯视频wordpress
  • 品牌型网站设计推荐外贸平台app下载
  • 珠宝品牌网站设计产品展示型网站有哪些
  • 网站设计建设流程电影资源分享网站怎么做的
  • 扁平化网站建设公司自己做网站怎么上传
  • 长治一般建一个网站需要多少钱wordpress后台菜单管理
  • 宁波装修公司网站制作东营seo网站推广
  • 郑州的建设网站有哪些手续做网站好还是做淘宝好
  • 上小学网站建设太仓广告设计公司网站
  • 电热设备网站建设南昌网站建设公司价位
  • 网站建设价格组成公司常用网站开发软件
  • 做网站续费要多少钱松岗网站建设
  • 做白酒用哪个分类信息网站网站敏感目录漏洞修复
  • 摄影瀑布流网站模板广州网站定制商家
  • 描述建设网站的步骤小叮当网站建设
  • 河北省建设局网站材料备案wordpress修改作者
  • 建设中小企业网站微信网站协议书
  • 发布网站域名设置网络营销心得体会300字
  • 网站优化公司方案网站建设及管理使用情况汇报
  • 网站模板怎么导入郑州购物网站建设