Кажется, я решил большинство проблем, просто запустив многопоточность своего приложения!Тем не менее, я сталкиваюсь с небольшой ошибкой: «Стек вокруг переменной« x »поврежден».Это работает должным образом (после нажатия abort на Debug Error), но, очевидно, у меня не может быть ошибки каждый раз, когда кто-то запускает приложение.Так что вот соответствующий код.Это обратный вызов одного из моих рабочих потоков.
DWORD WINAPI Arc_writePipe(LPVOID threadParam)
{
Arc_Redirect ar;
DWORD dwWrote;
CHAR chBuf[BUFSIZE];
HANDLE hPipe = (HANDLE)threadParam;
HWND g1 = FindWindow("GUI",NULL);
HWND dlg = GetDlgItem(g1,IDO_WORLDOUT);
//int nLength = GetWindowTextLength(GetDlgItem(g1,IDO_WORLDINPUT));
while(bRunThread)
{
if(GetDlgItemText(g1,IDO_WORLDINPUT,chBuf,BUFSIZE))
{
chBuf[BUFSIZE] = '\0';
if(!WriteFile(hPipe,chBuf,BUFSIZE,&dwWrote,NULL))
{
//SetDlgItemText(g1,IDO_WORLDINPUT,NULL); // This is to reset text when done sending to input
if(GetLastError() == ERROR_NO_DATA)
break; // Normal :)
else
MessageBox(g1,"Error: Could not WriteFile();","Error",MB_ICONERROR);
}
}
}
return 1;
}
У кого-нибудь есть идеи, почему эта ошибка продолжает возникать?После записи данных я не получаю никакого вывода GetLastError (), кроме «ERROR_NO_DATA», поэтому я предполагаю, что это как-то связано с моим WriteFile ();функция в сочетании с BUFSIZE (определяется в 0x1000).В общем, я делаю что-то не так.Кто-нибудь знает, возможно, лучший способ получить информацию из диалогового окна редактирования и записать ее в канал?
Большое спасибо за вашу помощь!
С уважением,Деннис М.