自己正在做一个小软件普通的WIN32窗口程序 。图片如下
现在 我要给 那两个Combobox 添加和删除内容 请问要如何做
因为第二个的内容需要随第一个改变而改变 
所以不能做在资源文件里面了 (况且我也不再到怎么做在资源文件里面 试过一次 结果 编译斗不过了)顺便说下 这是一个Dialogbox 不是Form/Window 
所以 里面控件的实在.rc资源文件里面创建的非MFC求达人帮助. 

解决方案 »

  1.   

    SendMessage(hwndCB, CB_ADDSTRING, ...)所有功能都是通过消息完成的,还有的消息是CB_INSERTSTRING/CB_DELETESTRING/CB_FINDSTRING...
      

  2.   

    能详细说明下 第四个参数 要怎么设置么?
    是选项的char数组的指针 还是?
      

  3.   

                HWND Combobox1,Combobox2;
                Combobox1 = GetDlgItem(hwndDlg,IDC_COMBO1);
                Combobox2 = GetDlgItem(hwndDlg,IDC_COMBO2);
                assert(Combobox1 && Combobox2);
                SendMessage(Combobox1, CB_ADDSTRING, 0, (LPARAM)"Test\0\0");
    这样做为什么没有效果呢?
      

  4.   

    HWND hwndComboBox1 = GetDlgItem(hwndDlg,IDC_COMBO1);
    ComboBox_InsertString(hwndComboBox1,-1,TEXT("Test\0\0"));或者
    SendMessage( 
      (HWND) hWnd,         // handle to destination window 
      CB_ADDSTRING,        // message to send
      (WPARAM) wParam,     // not used; must be zero
      (LPARAM) lParam      // string to add (LPCTSTR)
    );
      

  5.   

    // 你那段代码没问题啊。
    // SendMessage的返回值是什么?
      

  6.   

    // 是否unicode工程?
    // 如果是unicode工程, (LPARAM)L"Test"
      

  7.   

    // 可以用SetWindowPos()改变控件的大小
      

  8.   

    创建的时候rect你是怎么制定的
    加大那个rect的高度试一下
      

  9.   

    消息的使用自然是看MSDN中的联机帮助了,代码可直接参照:
    C:\Program Files\Microsoft Visual Studio\VC98\MFC\Include\AFXWIN2.INL
    中相应的MFC源代码:
    _AFXWIN_INLINE int CComboBox::AddString(LPCTSTR lpszString)
    { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, CB_ADDSTRING, 0, (LPARAM)lpszString); }
    _AFXWIN_INLINE int CComboBox::InsertString(int nIndex, LPCTSTR lpszString)
    { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, CB_INSERTSTRING, nIndex, (LPARAM)lpszString); }
    _AFXWIN_INLINE int CComboBox::FindString(int nStartAfter, LPCTSTR lpszString) const
    { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, CB_FINDSTRING, nStartAfter,
    (LPARAM)lpszString); }
    BTW:我觉得学习任何一个框架都应该尽量多看它的源代码!
      

  10.   


    这个下拉框的高度其实就是像8楼说的这样直接用API像改普通窗口的高度那样修改的,当然你用MoveWindow也行,最好直接在CreateWindow时就指定为相应的高度.// 可以用SetWindowPos()改变控件的大小
      

  11.   

    http://topic.csdn.net/t/20020612/15/797840.html
    如何调整CComboBox的下拉框的高度?如果是在对话框上的控件,那么只要点击CComboBox右边的小三角,
    这时就可以改下拉框的大小,再点一下,就是调整CComboBox   的大小。http://hi.baidu.com/blackscreen/blog/item/801970c4e3dea6a08226acc2.html
    vc下动态修改ccombobox的下拉高度
    2009-08-31 16:30在一个项目中,为了界面的规整,对ccombobox的控件使用了MoveWindow函数定位,如下:
    m_comtable.MoveWindow(5,5,260,35);
    意思是该控件左上角坐标为(5,5),高和宽分别为35和260.
    但使用该方法后,运行后的程序下拉框打不开!嘿嘿,真让我麻烦亚,查了msdn,没有动态设置combobox下拉长度的,只有
    设置下拉宽度的方法: SetDroppedWidth.想了很长时间,最后通过尝试解决了该问题,郁闷的很,原来对combobox控件设置movewindow的时候,参数中的高度是下拉后的高度!! 哭...郁闷呀,本来对vc编程都不熟悉.深感vc界面比起delphi真不是一般的不方便呀....