代码如下:首先主函数调用 CreateComboBox() 函数,创建组合框,并向它的窗口过程发送
   SendMessage(m_hwndCom, CB_INSERTSTRING,0,(LPARAM)"ddd"); 就是添加一项,
   ComboxWndProc 是组合框的窗口过程,
   
   另一种方法是调用 ComboBox_SetCueBannerText(m_hwndCom, "ddd"); 但是没一点办法,
  
   牛牛们看看~~~
void TControl::CreateComboBox()
{
m_hwndCom = CreateWindowEx(WS_EX_NOACTIVATE ,// 附加样式 
WC_COMBOBOX, NULL, // 窗口类 // 窗口的标题
CBS_AUTOHSCROLL|CBS_DROPDOWNLIST|WS_BORDER|WS_CHILDWINDOW, // 窗口样式 :可见,子窗口,
10, 10, 100, 20,
TtheApp.hwndMain, // 父窗口句柄
(HMENU)NULL, TtheApp.hInstanceMain, NULL); // 没有菜单 // 应用程序实例 // 没有图标

ComboBox_SetCueBannerText(m_hwndCom, "ddd");

ShowWindow(m_hwndCom, SW_SHOWNORMAL); //显示
SendMessage(m_hwndCom, CB_INSERTSTRING,0,(LPARAM)"ddd");}LRESULT CALLBACK TControl::ComboxWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
if( message == CB_INSERTSTRING )
// Add ??? return CallWindowProc(TtheApp.theCon->ComOrigWndproc, hWnd, message, wParam, lParam);
}

解决方案 »

  1.   

    //不必子类化。
    HWND CreateCB(HWND parentWnd)
    {
    HWND hComboBox=0;
    hComboBox = CreateWindow("COMBOBOX",
                    NULL,
                    WS_CHILD|WS_VSCROLL | WS_TABSTOP |  CBS_DROPDOWNLIST |CBS_SORT,
                    330, 20, 90, 140, 
                    parentWnd, (HMENU)IDC_COMBOBOX, 
                    (HINSTANCE) GetWindowLong(parentWnd, GWL_HINSTANCE), 
                    NULL);
                ShowWindow(hComboBox,SW_SHOW);
                SendMessage(hComboBox,CB_ADDSTRING ,0,(LPARAM)"你好");
                SendMessage(hComboBox,CB_ADDSTRING ,0,(LPARAM)"我好");
                SendMessage(hComboBox,CB_ADDSTRING ,0,(LPARAM)"他好");

    return hComboBox;
    }
      

  2.   


      3K,这个可以实现,   用 CreateWindowEx 这么实现啊,在扩展样式里我都传入 0 了,还是不显示,用CreateWindow又以!   
      

  3.   

    ComBoxEx这样产生:
    #define WS_EX_NOACTIVATE 0x08000000L
    //
    HWND WINAPI CreateComboEx(HWND parentWnd)
    {
        HWND hComboBoxEx;
        INITCOMMONCONTROLSEX icex;
        
        icex.dwSize = sizeof(INITCOMMONCONTROLSEX);
        icex.dwICC = ICC_USEREX_CLASSES;    InitCommonControlsEx(&icex);    hComboBoxEx = CreateWindowEx(WS_EX_NOACTIVATE, WC_COMBOBOXEX, NULL,
    WS_BORDER | WS_VISIBLE |
    WS_CHILD | CBS_DROPDOWN,
    330,     // Vertical position of Combobox
    20,     // Horizontal position of Combobox
    90,     // Sets the width of Combobox
    140,    // Sets the height of Combobox
    parentWnd, (HMENU)IDC_COMBOBOX, 
    (HINSTANCE) GetWindowLong(parentWnd, GWL_HINSTANCE), 
    NULL);
    // use CBEM_INSERTITEM头insert
        return hComboBoxEx;
    }
      

  4.   


      怎么响应组合框的消息呢?比如选择组合框中的一项就响应该消息?具体怎么实现?
      
      自己些的如下:响应的组合框控件消息,但控件里的具体项怎么区分啊,wParam,,lParam  每一个字段都试了一遍没用啊....  

    case WM_COMMAND: // 命令消息 char psz[20];
    int w_l, w_h, l_l, l_h;
    w_l = LOWORD(wParam);
    w_h = HIWORD(wParam); // 高位 W 是消息事件
    l_l = LOWORD(lParam);
    l_h = HIWORD(lParam);
    itoa(w_l, psz, 10); switch( w_h )
    {
    case CBN_SELCHANGE:
    // MessageBox(hwnd, ("222"), ("消息"), MB_YESNO);
    MessageBox(hwnd, (LPCSTR)psz, ("消息"), MB_YESNO);
    break;

    default:
    return ::DefWindowProc(hwnd, msg, wParam, lParam);
    }
    break;
    。。
      

  5.   

    在WM_COMMAND消息中
    hwndCtl = (HWND) lParam;
    通过控件句柄传递。
    判断如果是你的组合框句柄,则响应你的事件 
    假如你的组合框句柄是:hComboWnd
    if(hComboWnd==(HWND) lParam)
     switch(w_h)
            {
            case CBN_SELCHANGE:
                // MessageBox(hwnd, ("222"), ("消息"), MB_YESNO);
                MessageBox(hwnd, (LPCSTR)psz, ("消息"), MB_YESNO);
                break;
        
            default:
                return ::DefWindowProc(hwnd, msg, wParam, lParam);
            }
            break;