检查选定的Combobox项目 - WinApi C ++

时间:2015-10-12 22:59:48

标签: c++ winapi combobox

好吧所以我有一个关于检查ComboBox项目的问题,我目前使用了" ComboBox_AddString"添加项目,我正在使用ComboBox_GetText将其传递给wchar_t,然后检查wchar_t是否等于L" Minecraft"调试器中的所有内容都与变量名称匹配,但它会跳过它,就像它不相同。是否有#34;主流"检查选定的ComboBox项目的方法。

            wchar_t* szProccessToKill = new wchar_t[20];
            GetWindowText(hUserBox, szProccessToKill, 20);
            wchar_t* szGameSelect = new wchar_t[20];
            ComboBox_GetText(comboBox, szGameSelect, 20);

            if (szGameSelect == L"Minecraft")
            {
                MessageBox(NULL, L"HAI", L"NULL", NULL);
            }

这是整个代码,如果你想看看它,让我知道是否有更好的方法,我需要这个工作,因为它是一个GameLauncher我决定有一个ComboBox而不是数百万个按钮。我看到人们使用SendMessage,但我不知道为什么因为ComboBox_AddString工作得很好。

case WM_CREATE:
     {
        CreateWindowEx(NULL, BUTTON, L"Check for process", WS_CHILD | WS_VISIBLE | BS_AUTOCHECKBOX , 5, 35, 150, 25, hwnd, (HMENU)2, NULL, NULL);
        comboBox = CreateWindow(L"combobox", L"", WS_CHILD | WS_VISIBLE | CBS_DROPDOWNLIST , 250, 5, 100, 25, hwnd, (HMENU)1, NULL, NULL);

        ComboBox_AddString(comboBox, L"Minecraft");
        ComboBox_AddString(comboBox, L"Smite");
        CreateWindow(BUTTON, L"Launch", WS_CHILD | WS_VISIBLE, 250, 30, 100, 25, hwnd, (HMENU)4, NULL, NULL);
        hUserBox = CreateWindow(L"static", L"Awaiting Commands...", WS_CHILD | WS_VISIBLE | WS_BORDER, 5, 5, 240, 25, hwnd, NULL, NULL, NULL);
        break;
     }

    case WM_COMMAND:

        switch (LOWORD(wparam))
        {
            case 4:
            {
                wchar_t* szProccessToKill = new wchar_t[20];
                GetWindowText(hUserBox, szProccessToKill, 20);
                wchar_t* szGameSelect = new wchar_t[20];
                ComboBox_GetText(comboBox, szGameSelect, 20);

                if (szGameSelect == L"Minecraft")
                {
                    MessageBox(NULL, L"HAI", L"NULL", NULL);
                }

1 个答案:

答案 0 :(得分:4)

问题在于:

if (szGameSelect == L"Minecraft")

这不是字符串比较!它正在比较两个指针,当然这两个指针是不相等的。相反,您需要wcscmp

if (wcscmp(szGameSelect, L"Minecraft") == 0)