Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/157.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何使用不同的项目字符串创建两个不同的组合框?_C++_Winapi_Codeblocks - Fatal编程技术网

C++ 如何使用不同的项目字符串创建两个不同的组合框?

C++ 如何使用不同的项目字符串创建两个不同的组合框?,c++,winapi,codeblocks,C++,Winapi,Codeblocks,我创建了一个包含项目列表的组合框。如何使用不同的项目字符串创建另一个项目?我是否可以更改hWnd,因为第一个似乎已经有了HWNDComboBX。因此,当我将其应用于第二个时,会收到一条错误消息,指示存在重复值。 下面是我的代码。我还应该调用什么函数 case WM_CREATE: { HWND hWndComboBox = CreateWindow (TEXT("COMBOBOX"), TEXT (""), CBS_DROPDOWN| CBS

我创建了一个包含项目列表的组合框。如何使用不同的项目字符串创建另一个项目?我是否可以更改hWnd,因为第一个似乎已经有了HWNDComboBX。因此,当我将其应用于第二个时,会收到一条错误消息,指示存在重复值。 下面是我的代码。我还应该调用什么函数

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);