我目前正在开发一个用 C++ 编写并使用带有 MS Access 后端的 True OLE DBGrids 的项目。这一切都很好,直到现在我们需要能够将我们的 GUI 转换为显示阿拉伯字符。DBGrids 不使用 Unicode,所以我需要一种方法来显示数据库中的字符而不使用 Unicode。目前我已将区域语言设置设置为阿拉伯语,当我这样做时,我可以强制网格显示阿拉伯语字符,但我不能通过代码来做到这一点。我需要能够在运行时在英语和阿拉伯语之间切换。我可以将数据从数据库中提取出来,然后使用以下代码将其转换为非 Unicode:
_bstr_t tmp(vHolder.bstrVal, FALSE); //wrap the BSTR
CString Caption(static_cast<const char*>(tmp)); //convert it
RetCaption = Caption;
有了这个,我可以将阿拉伯语发布到 AfxMessageBox 并正确显示,但我似乎无法让网格接受非 Unicode 字符并正确显示它们。
有任何想法吗?