C++ 如何使用不同的项目字符串创建两个不同的组合框?
我创建了一个包含项目列表的组合框。如何使用不同的项目字符串创建另一个项目?我是否可以更改hWnd,因为第一个似乎已经有了HWNDComboBX。因此,当我将其应用于第二个时,会收到一条错误消息,指示存在重复值。 下面是我的代码。我还应该调用什么函数C++ 如何使用不同的项目字符串创建两个不同的组合框?,c++,winapi,codeblocks,C++,Winapi,Codeblocks,我创建了一个包含项目列表的组合框。如何使用不同的项目字符串创建另一个项目?我是否可以更改hWnd,因为第一个似乎已经有了HWNDComboBX。因此,当我将其应用于第二个时,会收到一条错误消息,指示存在重复值。 下面是我的代码。我还应该调用什么函数 case WM_CREATE: { HWND hWndComboBox = CreateWindow (TEXT("COMBOBOX"), TEXT (""), CBS_DROPDOWN| CBS
case WM_CREATE: {
HWND hWndComboBox = CreateWindow (TEXT("COMBOBOX"), TEXT (""),
CBS_DROPDOWN| CBS_HASSTRINGS | WS_VSCROLL| WS_VISIBLE | WS_CHILD ,
100, 150, 200, 150,
hwnd ,(HMENU) ID_COMBOBOX 1, NULL, NULL);
// ADD 2 ITEMS
SendMessage (
hWndComboBox,
(UINT) CB_ADDSTRING,
(WPARAM) 0, (LPARAM) TEXT ("Item 1"));
SendMessage (
hWndComboBox ,
(UINT) CB_ADDSTRING,
(WPARAM) 0, (LPARAM) TEXT ("Item 2"));
// SEND THE CB_SETCURSEL MESSAGE TO DISPLAY AN INITIAL ITEM IN SELECTION FIELD
SendMessage (hWndComboBox , LB_SETCURSEL , (WPARAM) 0, (LPARAM) 1);
复制并粘贴另一个组合框。对“发送消息”功能执行相同的操作。然后将第二个组合框的hWnd更改为hWndListBox。对“发送消息”执行相同的操作
HWND hWndListBox = CreateWindow (TEXT("COMBOBOX"), TEXT (""),
CBS_DROPDOWN| CBS_HASSTRINGS | WS_VSCROLL| WS_VISIBLE | WS_CHILD ,
100, 70, 200, 90,
hwnd ,(HMENU) NULL, NULL, NULL);
HWND hWndComboBox = CreateWindow (TEXT("COMBOBOX"), TEXT (""),
CBS_DROPDOWN| CBS_HASSTRINGS | WS_VSCROLL| WS_VISIBLE | WS_CHILD ,
100, 150, 200, 100,
hwnd ,(HMENU) NULL, NULL, NULL);
SendMessage (
hWndComboBox ,
(UINT) CB_ADDSTRING,
(WPARAM) 0, (LPARAM) TEXT ("Item 2"));
SendMessage (
hWndListBox ,
(UINT) CB_ADDSTRING,
(WPARAM) 0, (LPARAM) TEXT ("Item 1"));
// SEND THE CB_SETCURSEL MESSAGE TO DISPLAY AN INITIAL ITEM IN SELECTION FIELD
SendMessage (hWndComboBox , CB_SETCURSEL , (WPARAM) 0, (LPARAM) 0);
SendMessage (hWndListBox , CB_SETCURSEL , (WPARAM) 0, (LPARAM) 0);
请格式化您的代码-并从您的问题中删除c标记请将您的问题标题改为有意义的内容。C和combobox都在标记中,这意味着唯一相关的单词是combobox,它没有任何信息内容。你的标题应该描述你遇到的问题或你提出的具体问题,对在搜索结果中找到它的未来用户有意义。几乎在任何情况下都没有必要简单地重复标签中提供的信息。谢谢。C也不在C附近,它不接近C++。请使用与您的问题实际相关的标签,而不仅仅是使用看似相似或听起来熟悉的随机标签。这绝不是C代码,因此标记被错误地应用。这里的标签非常相关,具有特定的含义;请阅读您试图使用它们时出现的描述性文本,并且仅使用实际适用于您的问题的文本。如果您不确定,请不要使用它。出现一条错误消息,声称“标量对象”Combo\u 1\u Data“需要初始值设定项中的一个元素”,然后对“Combo\u 2\u Data”使用相同的内容。此外,我被告知没有声明'ID\u COMBOBOX\u 1',当我定义它们时,会收到一堆错误消息。我该怎么办。感谢您的回答。抛出错误scalar对象是因为我忘记向数组Combo_1_数据和Combo_2_数据添加accolades[],因为我之前没有回复,所以我正在检查是否一切都正常。我有一条错误消息,类型为'unsigned int'和'TCHAR'{aka char}'到binary'运算符/'的操作数无效,对不起,应该是sizeofCombo_2_数据/sizeofCombo_2_数据[0],而不是sizeofCombo_2_数据/Combo_2_数据[0],第一个Combo_1_数据也是这样,这是我的错误。我想我越来越累了。不幸的是,这次应用程序甚至无法构建。出现一条对话消息,指示“某个问题导致main.exe停止工作,Windows将在有解决方案时通知您”。有什么出路吗?
// put this declaration somewhere up (or better move it to an include file)
#define ID_COMBOBOX_1 1001
#define ID_COMBOBOX_2 1002
// end defines
case WM_CREATE: {
// it is preferably to use SendDlgItemMessage instead of SendMessage
// this make things easier
// you will not need combobox's HWND, just ComboBox ID
TCHAR *Combo_1_Data[]={
TEXT("Item 1"),
TEXT("Item 2")
};
TCHAR *Combo_2_Data[]={
TEXT("Element 1"),
TEXT("Element 2")
};
int i;
// create two different ComboBoxs
CreateWindow (TEXT("COMBOBOX"), TEXT (""),
CBS_DROPDOWN| CBS_HASSTRINGS | WS_VSCROLL| WS_VISIBLE | WS_CHILD ,
100, 150, 200, 150,
hwnd ,(HMENU) ID_COMBOBOX_1, NULL, NULL);
CreateWindow (TEXT("COMBOBOX"), TEXT (""),
CBS_DROPDOWN| CBS_HASSTRINGS | WS_VSCROLL| WS_VISIBLE | WS_CHILD ,
208, 150, 200, 150,
hwnd ,(HMENU) ID_COMBOBOX_2, NULL, NULL);
// Fill first Combo with its Data
for( i = 0 ; i < (sizeof(Combo_1_Data) / sizeof(Combo_1_Data[0]) ) ; i++ ){
SendDlgItemMessage (hwnd,ID_COMBOBOX_1 ,CB_ADDSTRING, 0, (LPARAM) Combo_1_Data[i]);
}
SendDlgItemMessage (hwnd, ID_COMBOBOX_1 , LB_SETCURSEL , (WPARAM) 0, (LPARAM) 1);
// Fill second Combo with its Data
for( i = 0 ; i < (sizeof(Combo_2_Data) / sizeof(Combo_2_Data[0] )) ; i++ ){
SendDlgItemMessage (hwnd,ID_COMBOBOX_2 ,CB_ADDSTRING, 0, (LPARAM) Combo_2_Data[i]);
}
SendDlgItemMessage (hwnd, ID_COMBOBOX_2 , LB_SETCURSEL , (WPARAM) 0, (LPARAM) 1);