Enix,
Try stepping through the code with a debugger. Verify that List is != NULL and that SendMessage does not return LB_ERR.
However, my guess is that EX1 is a pointer to a character string. If so, you just need to pass EX1.
This indirection of EX1 returns the VALUE stored at the first element of the array character array, not the ADDRESS of the array which is what the function expects.
Anyways, I hope I was able to explain it correctly...hehe..
e.g.
char *test = "test";
//: point to the ADDRESS of "test".
char *t = test;
//: this is the same as
//: t = &test[0];
//: get the VALUE pointed to by test
char value = *test;
//: this is the same as
//: value = test[0]
//:
So, your SendMessage call becomes:
SendMessage(List, LB_ADDSTRING, 0, (LPARAM) EX1);
HTH,
-mordell