好吧所以我有一个关于检查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);
}
答案 0 :(得分:4)
问题在于:
if (szGameSelect == L"Minecraft")
这不是字符串比较!它正在比较两个指针,当然这两个指针是不相等的。相反,您需要wcscmp
:
if (wcscmp(szGameSelect, L"Minecraft") == 0)