Кажется, я решил большинство своих проблем, просто запустив многопоточность в своем приложении! Однако я сталкиваюсь с небольшой ошибкой: «Стек вокруг переменной« x »был поврежден». Он работает правильно (после прерывания ошибки отладки), но, очевидно, у меня не может быть ошибки каждый раз, когда кто-то запускает приложение. Итак, вот соответствующий код. Это обратный вызов одного из моих рабочих потоков.
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). Так что в основном я делаю что-то не так. Кто-нибудь знает, возможно, лучший способ получить информацию из диалогового окна редактирования и записать ее в канал?
Большое спасибо за Вашу помощь!
С уважением,
Деннис М.
x
в вашем коде. Какая фактическая переменная повреждена? - person JSBձոգչ   schedule 13.07.2010