自己正在做一个小软件普通的WIN32窗口程序 。图片如下
现在 我要给 那两个Combobox 添加和删除内容 请问要如何做
因为第二个的内容需要随第一个改变而改变
所以不能做在资源文件里面了 (况且我也不再到怎么做在资源文件里面 试过一次 结果 编译斗不过了)顺便说下 这是一个Dialogbox 不是Form/Window
所以 里面控件的实在.rc资源文件里面创建的非MFC求达人帮助.
现在 我要给 那两个Combobox 添加和删除内容 请问要如何做
因为第二个的内容需要随第一个改变而改变
所以不能做在资源文件里面了 (况且我也不再到怎么做在资源文件里面 试过一次 结果 编译斗不过了)顺便说下 这是一个Dialogbox 不是Form/Window
所以 里面控件的实在.rc资源文件里面创建的非MFC求达人帮助.
是选项的char数组的指针 还是?
Combobox1 = GetDlgItem(hwndDlg,IDC_COMBO1);
Combobox2 = GetDlgItem(hwndDlg,IDC_COMBO2);
assert(Combobox1 && Combobox2);
SendMessage(Combobox1, CB_ADDSTRING, 0, (LPARAM)"Test\0\0");
这样做为什么没有效果呢?
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)
);
// SendMessage的返回值是什么?
// 如果是unicode工程, (LPARAM)L"Test"
加大那个rect的高度试一下
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:我觉得学习任何一个框架都应该尽量多看它的源代码!
这个下拉框的高度其实就是像8楼说的这样直接用API像改普通窗口的高度那样修改的,当然你用MoveWindow也行,最好直接在CreateWindow时就指定为相应的高度.// 可以用SetWindowPos()改变控件的大小
如何调整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真不是一般的不方便呀....