C++动态创建的MFC视觉工作室填充组合框

C++ MFC visual studio fill combobox created dynamically

本文关键字:工作室 填充 组合 视觉 MFC 动态 创建 C++      更新时间:2023-10-16

我尝试使用以下代码填充我动态创建的组合框:

            hw = ::CreateWindowEx(0, _T("COMBOBOX")
            , NULL, WS_CHILD | WS_VISIBLE | WS_TABSTOP | CBS_DROPDOWN
            ,gx, gy, w,h
            , this->m_hWnd, (HMENU)id, AfxGetApp()->m_hInstance, NULL
            );
            LRESULT msg ;
            msg=::SendMessage(hw,CB_ADDSTRING,i,(LPARAM)"test");
            if (msg = CB_ERRSPACE)
            {
                MessageBox(NULL,((LPCTSTR)""),0);
            }

我总是在味精中得到一个 NULL 值,没有添加任何项目。请问怎么了??多谢!

尝试

SendMessage(hw, CB_INSERTSTRING, -1, (LPARAM)"test");

您需要注意,项目有 Unicode 和 MBCS 设置。我假设您的项目具有 Unicode 设置。

因此,当您起诉字符常量并希望在 WinAPI 函数中使用它们时,需要使用 _T 或 TEXT。

msg=::SendMessage(hw,CB_ADDSTRING,i,(LPARAM)TEXT("test"));
if (msg = CB_ERRSPACE)
  MessageBox(NULL,TEXT(""),0);

结果 msg==0 是正常的。您向组合框中添加了一个项目。但由于编码错误可能看不到要设置的文本。