看来我只是通过对我的应用程序进行多线程处理来解决我的大部分问题!但是,我遇到了一点错误:“围绕变量'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;
}
有没有人知道为什么这个错误不断发生?在写入数据后,除了“ERROR_NO_DATA”之外,我没有得到任何 GetLastError() 输出,所以我假设它与我的 WriteFile(); 函数与 BUFSIZE(定义在 0x1000)一起使用。所以基本上,我做错了什么。有谁知道从编辑对话框中获取信息并将其写入管道的更好方法?
非常感谢你的帮助!
问候,
丹尼斯 M。