return will return control to the caller immediately, execution will never reach the final break.
here's an example of what you're trying to do, although it could probably be written alot better, it's just an example:
Code:
char *URLbuf, *url = "http://dictionary.reference.com/browse/", buf[50];
BOOL lResult = SendMessage(GetDlgItem(hwnd, 2010),LB_GETCURSEL,0,0);
if (lResult >= 0) {
SendMessage(GetDlgItem(hwnd, 2010),393,sizeof buf,(LPARAM)buf);
URLbuf = malloc(strlen(url) + strlen(buf) + 1);
strcpy(URLbuf, url);
strcat(URLbuf, buf);
ShellExecute(hwnd,"open",URLbuf, NULL, NULL, SW_SHOWNORMAL);
free(URLbuf);
}
return 0;