Arrays 从char数组开始向下拉框添加项(使用CB_字符串)

Arrays 从char数组开始向下拉框添加项(使用CB_字符串),arrays,visual-c++,sendmessage,dropdownbox,Arrays,Visual C++,Sendmessage,Dropdownbox,我一直在尝试使用char数组中的数据填充下拉框 char state[100][100]; char states[100]; char *test[1]; //FILL ARRAYS char state[0][0] = 't' states[1] = state[0][0] test[1] = "CALIFORNIA"; SendMessage(hwnd2,CB_ADDSTRING,0,(LPARAM) states[1]); //wont add db item 但是,

我一直在尝试使用char数组中的数据填充下拉框

char state[100][100];
char states[100];
char *test[1];


//FILL ARRAYS
char state[0][0] = 't'  
states[1] = state[0][0]   
test[1] = "CALIFORNIA";


SendMessage(hwnd2,CB_ADDSTRING,0,(LPARAM) states[1]); //wont add db item
但是,以下内容将填充下拉框:

SendMessage(hwnd2,CB_ADDSTRING,0,(LPARAM) test[1]); //db item added  WORKS

我正在使用MSVS2010。我的目标是从一个2d数组转移到一个1d数组,这样我就可以使用CB_ADDSTRING来填充下拉框中的项目。有人能告诉我发生了什么事吗?非常感谢

您可以将字符数组初始化为字符串文字,如下所示:

char buf[] = "Text";
或初始化二维字符数组,该数组是字符串的单个数组:

char str_array[][10] = { "Text1", "Text2" };
数组索引从零开始
str_数组[0]
str_数组[1]
有效

使用strcpy复制字符串

char another[100][100];
strcpy(another[0], "array_0");
strcpy(another[1], "array_1");

SendMessageA(hwnd2, CB_ADDSTRING, 0, (LPARAM)buf);
SendMessageA(hwnd2, CB_ADDSTRING, 0, (LPARAM)str_array[0]);
SendMessageA(hwnd2, CB_ADDSTRING, 0, (LPARAM)str_array[1]);
SendMessageA(hwnd2, CB_ADDSTRING, 0, (LPARAM)another[0]);
SendMessageA(hwnd2, CB_ADDSTRING, 0, (LPARAM)another[1]);

这些是指针,您必须使用strcpy,或者可以使用字符串文本初始化数组。我建议您在开始WinAPI编程之前先学习基本的C/C++。使用C++ <代码> STD::String 类,或者使用高级语言(如C·./.NET)来分配字符串,我应该已经详细说明了。我已经在另一段代码中初始化了所有数组。。我已经更新了我的帖子来反映这些额外的信息。