小编EmJ*_*ash的帖子

无法获得当前的键盘布局

我已经尝试了GetKeyboardLayoutName()GetKeyboardLayout()来获取当前的键盘布局,但它们都给我默认布局并且更改布局不会影响输出!

while(1)
{
    Sleep(5);
    for(int i = 8; i < 191; i++)
    {
        if(GetAsyncKeyState(i)&1 ==1)
        {
            TCHAR szKeyboard[KL_NAMELENGTH];
            GetKeyboardLayoutName(szKeyboard);

            if(GetAsyncKeyState(i)&1 ==1)
            {
                TCHAR szKeyboard[KL_NAMELENGTH];
                GetKeyboardLayoutName(szKeyboard);
                cout << szKeyboard << endl ;
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

当默认布局设置为英语时,它总是给我"00000409",而当我将布局更改为Farsi时,我希望它为"00000429".

我在这里的第一个问题,我过去通过搜索找到了我的所有答案.但是现在我经过几个小时的搜索并且什么也没得到......

c++ winapi keyboard-layout

6
推荐指数
1
解决办法
4906
查看次数

为何通过编程设置时android无法将语言环境识别为RTL?

我写了一个多语言的应用程序。

我有不同的values文件夹,用于支持values-fa和等不同的语言values-ru。由于其中一些语言(如波斯语和阿拉伯语)是RTL,因此我通过将其他一些布局.xml文件layout-ldrtl放在主layout文件夹旁边的文件夹中,使用了不同的布局设计。

我还将一个名为is_right_to_left.xmlint的文件放在一个名为的文件夹中values-ldrtl,该文件夹定义了这样的变量:

<bool name="is_right_to_left">true</bool>
Run Code Online (Sandbox Code Playgroud)

我在values文件夹中有相同的文件,并将变量值设置在false那里。

每当我需要知道的代码时,我都会使用此行来了解当前语言环境是否是RTL:

isRightToLeft = context.getResources().getBoolean(R.bool.is_right_to_left);
Run Code Online (Sandbox Code Playgroud)

我已经使用不同的设备配置测试了该应用程序,并且一切正常工作。例如,将设备语言设置为Farsi会导致应用从中读取字符串values-fa和布局layout-ldrtl,而为设备设置了阿拉伯语时,则从中读取值,也从中读取values-ar布局,layout-ldrtl因为它们都是RTL语言。当然,它也适用于LTR语言。这是我想要的。

当我以编程方式设置应用程序的语言环境时,会发生问题。这是我在onCreate()my方法中编写的代码MainActivity

Locale myLocale = new Locale("fa");
Resources res = getResources();
DisplayMetrics dm = res.getDisplayMetrics();
Configuration conf = res.getConfiguration();
conf.locale = myLocale;
res.updateConfiguration(conf, dm);
Run Code Online (Sandbox Code Playgroud)

现在,值根据语言正确读取,但layout-ldrtlvalues-ldrtl被从来没有读过。因此,由于错误的.xml文件和错误的isRightToLeft变量值,该应用程序将在LTR设计中加载。我测试过的一种解决方案是将这些.xml文件分别放在每个语言布局文件夹中,并且可以正常工作。但是我希望找到一种更好,更整洁的方法来解决问题。除了解决方案,为什么Android会以这种方式运行?

globalization android locale localization right-to-left

4
推荐指数
1
解决办法
763
查看次数

如何在 Android Studio 中重新包含排除的目录?

这里解释了如何在 Android Studio 中排除目录。它还有一个关于不知道如何再次包含它的警告。现在我需要这样做。

当然,我可以再次创建/导入项目。但我想有更好的方法来做到这一点。在那儿?如何?

intellij-idea android-studio

4
推荐指数
2
解决办法
1455
查看次数

有可重用对话框的最佳方法是什么?

在Android中创建可重用对话框的最佳方法是什么?

通过Dialog开发指南阅读,我知道我可以AlertDialog.Builder(this);在我Activity的一个中使用,但如果我想在多个活动中使用它,该怎么办?如果这是其他类我会扩展它,所以MyDialog extends AlertDialog,但是我不能使用Builder.

有什么建议?

android dialog android-alertdialog

3
推荐指数
1
解决办法
2736
查看次数

为什么sys socket recv函数不填充数据但返回字节长度?

我正在写一个c ++客户端.客户端使用TCP协议成功连接到服务器并发送数据.我写下面的代码来接收数据:

char data[9];
int received_size = recv(fd, data, 9, flags);
std::string str{ data };
// str.empty() is true
Run Code Online (Sandbox Code Playgroud)

哪些标志是MSG_NOSIGNAL.

问题是在执行此行之后,received_size为9但数据长度为零.

c c++ sockets linux c++11

3
推荐指数
1
解决办法
199
查看次数